在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
运行结果是3 1 00
追答这个分析归分析啊,c语言实际上是一种规范,国内大部分讲c语言的书都是基于vc6.0编译环境的,建议你在所用的环境下,设置断点,然后逐步执行,并同时设置变量监测,这个百度都可以查到的,有了这些,你就可以看到相应结果了,因为你这个题也没什么奖励,就不进一步展开了
int a=1,b=2,c=3; printf("%d%d%d\\n",a=b=c,a=b==c,a==(b=c),a==...
答案应该是3 1 0 0 从右向左计算并压栈:a==(b==c),由于b!=c,所以b==c=0;而a!=0,所以a==(b==c)=0。a==(b=c)使b=3,而a!=3,所以a==(b=c)=0。a=b==c,由于b==c成立(上面已经使b=c=3了),所以b==c=1;所以a=b==c是把1赋给a,使a=1。a=b=c,...
...main () { int a=1,b=2,c=3; if (a>c) b=a;a=c;c=b; printf ("%d...
a=c;\/\/ 执行 c=b; \/\/ 执行 也就是说只有 b=a 是 if 条件成立时执行的语句。由于 a>c 条件不成立,所以不执行 b=a;
C语言中设a=1,b=2,c=3,d=4;执行printf(%d%d%d\\n",a==b==c,c=a==b...
答案 1113 从右到左运行:第一步:b=c 其他值 a b c d 1 3 3 4 第二步:c==(a=b) 先运行a=b,值为3,在运行c==3,c的值为3, 结果为1,其他的值 a b c d 3 3 3 4 第三步:c=a==b 先运行a==b,第二步可以看出a=3,b=3,a==b的值为1,...
main( ) { int a=1,b=2,c=3; printf(“%d”,c>b>a); }
c>b结果是1 然后再继续 1>a 结果为零。再不然,你把a初始化为0,结果为1
main(){ int a=1,b=2,c=3;if(c=a)printf("%d\\n",c);else printf("%\\n...
if(c=a)在c语言中 =是赋值运算符, 运算结果 c=1,c=a 作为整个表达式的结果,是运算后的值也就是 1,if 语句需要一个条件表达式,任何非零的值就是 真值,而零就是假值 另c语言中的相等比较运算符是 ==
...main() { int a=1,b=2,c=3,d=4; printf("%d\\n",(a+b,b+c,c+d...
这里的(a+b,b+c,c+d)是一运算表达式,有"+"运算和","运算,printf("%d\\n",(a+b,b+c,c+d))就是将这个运算表达式的结果打印到屏幕上。
...main() { int a = 1,b = 2; printf ("%d\\n",a=a+); }
1.a= b+ c 所以表达式值为非零,为真,执行printf ("###\\n");2.自增运算符后缀,所以先引用,后自增,m为2,m>2为假,然后m自增一值为3,执行else部分,m+2=5 7.注意是x=2 ,是=,赋值号,也就是x被赋值为2,表达式非零,为真执行y= y+2;8.i为10,所以到case 10部分i+=1;i值为11...
...x*(x-1) main(){ int a=1,b=2; printf(“%d\\n
define MAX(X) X,在编译时候,只做简单替换。比如说 在main()函数中,int x=MAX(a+b)*MAX(a+b),c编译器在编译的时候,将MAX替换,变成a+b*a+b。
c语言中int a=1,b=2,c=3;(a=b+c)||(++b);printf("a=%d,b=%d,c=%d\\...
||运算符的短路效应,导致左操作数求值后,由于左操作数的值为5(真),故没有对右操作数求值,即b的值没有变化 故a值为5,bc都仍是原值
C语言中int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf
int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf("c=%d",c);程序运行后,将输出:c=4 因为, c=(a+=a+2),(a=b,b+3);是一个逗号表达式,它等价于:(c=(a+=a+2)),(a=b,b+3); \/\/因为逗号运算符的优先级为最低。