c语言给数组赋值输入a,b,c给a,b赋值使c=a b

第三方登录:> C语言缺陷OR陷阱?inta,b,c;a=b=c=1;++a||++b&&++c;
C语言缺陷OR陷阱?inta,b,c;a=b=c=1;++a||++b&&++c;
sunfhh & &
发布时间: & &
浏览:58 & &
回复:4 & &
悬赏:0.0希赛币
C语言缺陷OR陷阱?int&a,b,c;
&&&&&a=b=c=1;
&&&&&++a||++b&&++c;
printf(“%d,&%d,&%d\n”,&a,&b,&c);
按照优先级应该先执行&&,在执行||;为什么在这里不是这样的?
这不是缺陷也不是陷阱。优先级与计算顺序是不同的。
优先级决定了编译器如何理解你写的表达式。按照优先级规则,先把++与b结合,再把++与c结合,再把++与a结合这是三个“一元表达式”,然后是++b、&&、++c结合,成为“逻辑与表达式”,最后再与++a、sunflower431 & &
& & (0)(0)结合,成为“逻辑或表达式”,因此这个表达式的值是个bool型。
语法分析完成后,编译器开始生成代码,这时C一般没有规定计算顺序,这一点由编译器决定,以便于优化处理。
但是,sunflower_zhy & &
& & (0)(0)与&&是C中少有的规定了计算顺序的表达式,C要求编译器必须从左向右算起,当计算结果可以获知整个表达式的终值时,就要停止计算。
&++asunflower_qiu & &
& & (0)(0)++b&&++c;
这个表达式就是先计算++a,值为2,非零,后面是逻辑或,无论后面的子表达式值为多少,结果都为真,所以要停止计算,++b与++c不执行。
结果a==2,b==1,c==1。sunflower_zhy & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&改了之后,我输入1,5,2。答案不是2.5,而是1.000000,为什么?不过还是谢谢你
202.103.241.*
您的举报已经提交成功,我们将尽快处理,谢谢!
老大,这里少个;
temp = &a;
还有你的写法该加空格的地方不加空格,
该换行的地方不换行,
无解,因为ABC+ABC=200A+20B+2C.BBCA=1100B+10C+A
所以200A+20B+2C=1100B+10C+A=200A
大家还关注
(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'[切换科目]
以下试题来自:
单项选择题若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c);给a赋值1,给b赋值2,给c赋值3,以下输入形式中错误的是(代表一个空格符)
为您推荐的考试题库
你可能感兴趣的试题
1A.3B.4C.5D.823A.2 3 4
3 4 5B.4 3 2
5 4 3C.2 3
2 34A.控制流B.事件驱动C.模块调用D.数据流5A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间
热门相关试卷
最新相关试卷}

我要回帖

更多关于 c语言数组赋值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信