社区
C语言
帖子详情
a3 = --a1+++a2;
wangyangcheng
2004-08-05 12:47:45
#include <stdio.h>
int main()
{
int a1 = 1,
a2 = 2,
a3;
a3 = --a1+++a2; //报C2105: '--' needs l-value,我觉得有左值呀?
//a3 = --a1+ ++a2; 则可以过,为什么?
return 0;
}
...全文
209
14
打赏
收藏
a3 = --a1+++a2;
#include int main() { int a1 = 1, a2 = 2, a3; a3 = --a1+++a2; //报C2105: '--' needs l-value,我觉得有左值呀? //a3 = --a1+ ++a2; 则可以过,为什么? return 0; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
antijpn
2005-09-09
打赏
举报
回复
说的根本就没到点子上,这个贴要是也能入FAQ的话,C语言的BZ就可以自杀去了……
并非因为++优先级高于+所以要先++,这个是编译器的贪心原则决定的,连续三个加号会被编译器分析为++ +两个词法单元,这样的话就造成了--a++这样的一个子表达式,对于这个表达式,在C中必然产生l-value required的错误,无关于前置和后置操作符的优先级(在C++里面如果先调用了前置操作符的话就不会有l-value required的问题了)
steel007
2004-08-05
打赏
举报
回复
对于可能出现疑虑的这种代码,还是加上括号表明自己的用意为好。
FlyindanceDDr
2004-08-05
打赏
举报
回复
你为什么一定要研究这种毫无意义的问题呢?不同的编译器有不同的处理方法,研究这种问题纯粹是浪费时间
imwj
2004-08-05
打赏
举报
回复
哥们,你在看哪本书哦
findstone
2004-08-05
打赏
举报
回复
我也绝得深究这些问题意义是在不大,还是多花点时间干点别的事情吧。
binjuny
2004-08-05
打赏
举报
回复
记住以后不要这样写了。,若你养成这样的习惯,读的人会累 ̄ ̄ ̄___ ̄ ̄ ̄ ̄ ̄
fengfeng1982
2004-08-05
打赏
举报
回复
这种问题我想应该是教材上才有,是测试读者的分析能力。一般正式的程序中不太会出现令人糊涂的表达式。因为这会给自己,别人读程序造成麻烦,还容易出错。
hongweijin
2004-08-05
打赏
举报
回复
是啊,在校园里遇到这样的问题,绝非偶然啊!
postage
2004-08-05
打赏
举报
回复
多个操作符作用于同一对象时,后增后减只能最后一个起作用,只是有些编译器会自动修正这个错误罢了,现在怎么老有人钻这牛角。
BroncoSpeedCoursing
2004-08-05
打赏
举报
回复
编译器大概对a1的这种--a1++运算不识别,不支持,所以报错。加上()就好了。
FlyindanceDDr
2004-08-05
打赏
举报
回复
增加括号不影响程序效率
BroncoSpeedCoursing
2004-08-05
打赏
举报
回复
如果写成a3=--a+(++a2);应该能通过,效果应该与a3 = --a1+ ++a2;相同吧。
BroncoSpeedCoursing
2004-08-05
打赏
举报
回复
a3 = --a1+++a2; //报C2105: '--' needs l-value,我觉得有左值呀?
//a3 = --a1+ ++a2; 则可以过,为什么?
很简单:因为++运算符号级别高于+ 所以先进行++的运算。即
对于a3 = --a1+++a2;实际运算为 a3 = ((--a)++)+a2;即先算--a之后算(--a)++,再之后是+a2.而不是a3=--a+(++a2);
而a3 = --a1+ ++a2;有空格分隔开第一个+与后面的两个++,所以编译器识别出来没有报错。
liubingqian
2004-08-05
打赏
举报
回复
有空还是歇会儿吧!
深入浅出理解
A3
C强化学习
本课程是一次理论+实战的结合,首先介绍强化学习的模型原理,详解
A3
C模型的原理,其次通过实践落实强化学习在游戏中的应用。
python 异常处理编程 已知某数列,
a1
=
a2
=
a3
=1,后面的每个数,是其前三个数之和,即a4=
a1
+
a2
+
a3
,a5=
a2
+
a3
+a4。编写程序,计算该数列中第一个大于1万的数是多少?是第
已知某数列,
a1
=
a2
=
a3
=1,后面的每个数,是其前三个数之和,即a4=
a1
+
a2
+
a3
,a5=
a2
+
a3
+a4。编写程序,计算该数列中第一个大于1万的数是多少?是第几个数? 示例 代码 方法一
a1
,
a2
,
a3
=1,1,1 a4 = 3 print(1,1,1,3,...
算法--360面试:使用递归实现:a0=1,
a1
=1;
a2
=a0+
a1
;
a3
=
a1
+
a2
...以此类推,求
a3
0
算法--360面试:使用递归实现:a0=1,
a1
=1;
a2
=a0+
a1
;
a3
=
a1
+
a2
...以此类推,求
a3
0
C语言练习题:求
a1
-
a2
+
a3
-a4+··· 的值(数组)
实现函数,对一个长度为 N 的数组,求A[0] - A[1] + A[2] - A[3] + A[4] + .... + A[N-1]的值 函数定义 int compute(int numbers[], int n); 参数 numbers,待计算的数组 ...numbers = {100,102,105,108,1
hdu-2086
A1
= ?
/* 因为:Ai=(Ai-1+Ai+1)/2 - Ci,
A1
=(A0 +
A2
)/2 - C1;
A2
=(
A1
+
A3
)/2 - C2 , ... =>
A1
+
A2
= (A0+
A2
+
A1
+
A3
)/2 - (C1+C2) 2[(
A1
+
A2
)+(C1+C2)] = A0+
A2
+
A1
+
A3
;
A1
+
A2
= A0+
A3
- 2(C1
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章