C语言,基础理解,请老师,朋友留步。

error C2105: '++' needs l-value

这个错误对于 char p[10]; ++p; 出现这个错误我能理解明白;

但是,对于下面这个:
++(x+1);
同样出现:error C2105: '++' needs l-value;
学生就不明白了,希望有老师或者C语言基础理解好的朋友讲解一下;百度未查到此类情况;

                                                    新来的没悬赏;

8个回答

char p[10],p里面存储的就是这个长度为10的数组的第一个元素的地址,并且p上面存储的地址是不能改变的,所以++p不对。下一个,++(x+1)显然不对,++后面是不能跟表达式的

MonAmourXXK
MonAmourXXK ++(x+1)显然不对,++后面是不能跟表达式的 这应该是我想要的结果, 谢谢,
接近 6 年之前 回复
MonAmourXXK
MonAmourXXK ++(x+1)显然不对,++后面是不能跟表达式的 这应该是我想要的结果, 谢谢,
接近 6 年之前 回复

lvalue 左值,可以放在赋值左边,必须是变量或者数组某一项

http://baike.baidu.com/view/836474.htm

MonAmourXXK
MonAmourXXK 谢谢。
接近 6 年之前 回复

++后面不能跟表达式,(x+1)属于表达式的一种

MonAmourXXK
MonAmourXXK ++后面不能跟表达式,(x+1)属于表达式的一种 这个应该是我要的结果,谢谢。
接近 6 年之前 回复
MonAmourXXK
MonAmourXXK ++后面不能跟表达式,(x+1)属于表达式的一种 这个应该是我要的结果,谢谢。
接近 6 年之前 回复

你将 ++Y 理解成:Y=Y+1 后,就可以理解你上面的那句为什么不行!
++(x+1),展开后为:(x+1) = (x+1) + 1,看看被赋值的,不是一个能接受被赋值的变量吧

firniel
firniel 回复MonAmourXXK: 表达式返回的是个立即数吧,立即数不能做左值,91的解释也对。你说的“++后面是不能跟表达式的”是个结论,这个结论的原因可以按91的理解
接近 6 年之前 回复
MonAmourXXK
MonAmourXXK 我觉得不应该这么理解 , 应该是楼下的 【++(x+1)显然不对,++后面是不能跟表达式的】 ,如果X+1可以,那么加上括号,等于前面加上一个N=X+1; 再将++(x+1);改为++N是一个道理,而前者错,后者对。
接近 6 年之前 回复

个人认为:
x+1结果应该是常量,常量再++,是不可以的。
本人也是菜鸟,错了别见怪。

MonAmourXXK
MonAmourXXK 楼下有解释, 【++(x+1)显然不对,++后面是不能跟表达式的】这个是我接受的。
接近 6 年之前 回复
MonAmourXXK
MonAmourXXK 没事。
接近 6 年之前 回复

91program 的解释很好
你了解了“++”在C语言的运算过程。就能明白。推荐你看看《C陷阱与缺陷》

yaojun333
冥王星之舞 回复MonAmourXXK: 可以这样理解
接近 6 年之前 回复
MonAmourXXK
MonAmourXXK 请问《C陷阱与缺陷》 是参考书?
接近 6 年之前 回复

char p[10];
你可以理解为: char * const p;

我认为++后面不能跟表达式,你可以再写一个x+=1;列两个式子。
不好意思我也是才开始学习C语言很有可能说的不太对。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐