读书人

这个有关问题很疯狂

发布时间: 2012-03-18 13:55:39 作者: rapoo

这个问题很疯狂
#include <stdio.h>

int main(void)
{
int i, j;

i = 1;
j = 3;

i++ = j++;
printf( "%d\t%d\n ", i, j);

return 0;
}

编译出错:error C2106: “=” : 左操作数必须为 l 值


[解决办法]
左边的i++产生临时变量,不能给临时变量赋值.
左值详细解释参看<C专家编程>
[解决办法]
i++返回的是一个临时的值,叫做右值,是不能被赋值的。=的左边必须是左值。
[解决办法]
= 左边必须是左值
[解决办法]
后缀++操作符确实不能返回一个左值,也就是说不能像LZ那样使用。
[解决办法]
不过你可以这样++i = j++
[解决办法]
这样临时理解一下
i++=j++;
不就是i=i+1=j++;
这是错误的。

读书人网 >C语言

热点推荐