#include<stdio.h> main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf("%d,%d,%d\n",a,b,c); }

这个程序的运行结果中,c的值为什么是4,不是5,求详细解释

第1个回答  2012-10-27
a+=a+2这里,计算机是从右开始计算到,a+2=3,然后a=a+3=4,所以c是4
第2个回答  2012-10-27
#include<stdio.h>
int main()
{
int a=1,b=2,c=3;
c=((a+=a+2),(a=b,b+3));
printf("%d,%d,%d\n",a,b,c);
return 0;
}
这样就是c=5,lZ明白了么本回答被提问者和网友采纳

#include<stdio.h> void main() { int a=1,b=2,c=3,d=4; printf("%d\\...
这里的(a+b,b+c,c+d)是一运算表达式,有"+"运算和","运算,printf("%d\\n",(a+b,b+c,c+d))就是将这个运算表达式的结果打印到屏幕上。

#include <stdio.h> void main() { int a=1,b=2,c=3,d=4; printf("%d...
然后再算b+(c++): 2+3 根据前面的分析c做了加一运算,所以c最终结果为4 a=5,c=4

...#include<stdio.h> Main() { int a=1,b=2,c=3,d=0; if(a= =1 &&...
源程序:include <stdio.h> main(){ int a=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2 || c--!=3)printf("%d,%d,%d\\n",a,b,c);else printf("%d,%d,%d\\n",a,b,c);else printf("%d,%d,%d\\n",a,b,c);} 输出: 1,3,3 【分析】if(a==1&&b++==2) *\/...

...mian () {int a=1,b=2,c=3; if(a==1&&b++==2) if(b!=2||c--!=3...
a=1 b=3 c=2 因为在判定 a==1&&b++==2 b已经做了自家运算 到b!=2||c--!=3 b!=2 flase 然后判定 c--!=3 c自减1

#include<stdio.h> void main() {int a=1,b=2,c; c=a<b?3:a>=b?a...
include<stdio.h> void main() {int a=1,b=2,c; c=a<b?3:a>=b?a:b; \/*a<b时,c=3,否则肯定是a>=b,则c=a*\/ printf("%d\\n",c);}

...main() {int a=1,b=2,c=3; if(c=a) printf("%d\\n",c); 答案为什么...
注意看这句 if(c=a)括号里面只有一个等号,所以是一个赋值表达式,也就是把a的值赋给c,表达式的结果就是所赋的值1,表达式的值非零为真,继续执行,输出c的值,由于c已经被赋为1了,所以输出结果为1。注意 c=a 和 c==a 是不一样的,前者是赋值,后者才是比较相等。

...#include <stdio.h> main() { int a = 1,b = 2; printf ("%d\\n...
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,...

#include"stdio.h" main() { int a=1,b=2,c=3,t; while(a<b<c) {...
include"stdio.h"main(){ int a=1,b=2,c=3,t;while(a<b<c) \/\/第一次执行到这里成立(a<b成立为1,1<c成立)。执行括号里的。这是a为2,b为1,c为2.在判断的时候,a<b不成立为0,0<c成立,所以仍然成立,继续执行。这是a为1,b为2,c为1,在判断(a<b成立为1,1<1不成立了...

#include <stdio.h> main () { int a=1,b=2,c=3; if (a>c) b=a;a=...
if (a>c) b=a;a=c;c=b; 相当于 if (a>c)b=a;\/\/ 不执行 a=c;\/\/ 执行 c=b; \/\/ 执行 也就是说只有 b=a 是 if 条件成立时执行的语句。由于 a>c 条件不成立,所以不执行 b=a;

...main() { int a=1,b=2,c=3; printf("%d\\n",M(a+b,b+c,c+a...
M(x,y,z) x*y+z x:a+b=1+2 y:b+c=2+3 z:c+a=3+1 代入 x*y+z=1+2*2+3+3+1=12。没问题。注意在预编译部分题目怎么写的,你就按照他写的格式直接把数代入就行了,不能给题目加括号。M(x,y,z)和M((x),(y),(z))是不一样的。

相似回答