为什么指针的临时变量会报错 lvalue required as increment operand

16次阅读

共计 416 个字符,预计需要花费 2 分钟才能阅读完成。

#include 

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: %cn", 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) 我这样写的,所以就是它就是一个左值了?

求各位大佬解答一下。

正文完
 0