在C语言中 main() {int a=1,b=2,c=3; printf("%d,%d,%d,%d\n",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);}运行结
在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
1个回答 分类:综合 2014-11-10

问题解答:

我来补答
!
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
main()
{
int a=1,b=2,c=3;
a=b=c;
a=b==c;
printf("%d",a);
}
你会发现输出的值是1
而如果是用
#include
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
我们现在还在学逗号运算符,这些,都是我自己推的.
仅是愚见
 
 
展开全文阅读
剩余:2000