在C语言中 main() {int a=1,b=2,c=3; printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b==c),a==(b==c);}运行结

在C语言中main(){inta=1,b=2,c=3;printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b==c),a==(b==c);}运... 在C语言中
main()
{int a=1,b=2,c=3;
printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b==c),a==(b==c);}运行结果为什么不是3,3,3,3 这个是如何运算出来的 谁解释下
为何我运算出的结果是3,1,0,0
展开
 我来答
匿名用户
2011-04-01
展开全部
a=b=c //将c的值3赋给b,再将b=c的值3赋给a,整个表达式的值是3
a=b==c //VC2005测试结果是3,我自己算应该是1,这个我不是很清楚。
a==(b==c) //先判断b==c,结果是1,再判断a==1,结果是0
a==(b==c) //先判断b==c,结果是1,再判断a==1,结果是0
百度网友8fbee656e8
2011-04-01 · TA获得超过1328个赞
知道小有建树答主
回答量:578
采纳率:68%
帮助的人:173万
展开全部

a=b=c,a=b==c,a==(b==c),a==(b==c)
第一个 a=b=c 是一个赋值语句 使得 a=b=c=3 所以输出 3
第二个 a=b==c 先对 b==c判断 即 3==3 是正确的 所以 a=1
第三个 a==(b==c) 由之前的赋值可以知道 b=c=3 所以 b==c 判断为 1
再对a==1 进行判断 ,结果为真 所以是1
第四个 和第三个一样 也是一样的
后来我在Cfree5.0测试了一下
发现用这样
#include <stdio.h>
main()
{
int a=1,b=2,c=3;
a=b=c;
a=b==c;
printf("%d",a);
}
你会发现输出的值是1
而如果是用
#include <stdio.h>
main()
{int a=1,b=2,c=3;
printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b==c),a==(b==c));}
发现是 3,0,0,0
第二个是0
我怀疑是printf函数的处理表达式的问题
每一个编译器的处理 应该是不一样的
我在第二个加了括号,也没用。结果还是0
我们现在还在学逗号运算符,这些,都是我自己推的。。
仅是愚见
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张效群
2011-04-01
知道答主
回答量:65
采纳率:0%
帮助的人:17.9万
展开全部
第一个a=b=c 是赋值语句,最终结果是a=3传给前面;第二个a=b==c,是先作比较运算==,结果为真,即非0,一般为1,所以此时a=1,并把结果赋予前面;第三个是判断语句,b==c为真,结果为1,a==1,结果为真,即1,并赋予前面;第四个同样为1;
所以最终结果是3,1,1,1的哦
追问
运行结果是3 1 00
追答
这个分析归分析啊,c语言实际上是一种规范,国内大部分讲c语言的书都是基于vc6.0编译环境的,建议你在所用的环境下,设置断点,然后逐步执行,并同时设置变量监测,这个百度都可以查到的,有了这些,你就可以看到相应结果了,因为你这个题也没什么奖励,就不进一步展开了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑引幽
2011-04-01 · TA获得超过393个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:154万
展开全部
因为先a==(b==c);运算返回0,==是关系运算符,b==c返回0 ,a==(b==c)返回0
然后 a==(b==c), 同样得到0,
a=b==c, a的值就变成0了
a=b=c a,b,c都值为3,整个表达式返回3
所以输出 3,0,0,0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wwxx_yu_dd
2011-04-01 · TA获得超过155个赞
知道答主
回答量:136
采纳率:100%
帮助的人:42万
展开全部
因为后面三个是“==”(等于号),显然c是不等于b的,按逻辑值处理成0.
程序如下:
#include <stdio.h>
main()
{int a=1,b=2,c=3;
printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b==c),a==(b==c));}
结果为3,0,0,0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式