#include <stdio.h>
int main() {
char arr[10] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' };
char *d = arr;
char value1 = *(((char*)d)++);//这里会报错
d = arr;
char value2 = *((char*)d++);
printf("value1: %c, value2: %c\n", value1, value2);
return 0;
}
gcc test.c -o test
test.c: In function ‘main’:
test.c:8:31: error: lvalue required as increment operand
8 | char value1 = *(((char*)d)++);
|
可能我对编译和 c 这块不是很懂,这个左值不是 c++的概念吗,怎么我这么编译还能报错啊?
然后就是这个报错信息没看懂,((char*)d)
我这样写的,所以就是它就是一个左值了?
求各位大佬解答一下。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.