求大神赐教,求一C语言题!!有以下程序 #include <stdio.h> main() { int x, y, z; x=y=1; z=x++,y++,++

有以下程序
#include <stdio.h>
main()
{ int x, y, z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}

程序运行后的输出结果是
A) 2,3,1
B) 2,3,2
C) 2,3,3
D) 2,2,1

通过实际验证了的结果,答案是 A

这里我分布说明,程序的过程:

    第一步计算:x = y = 1;

    第二步计算:z = x ;   结果 z = 1;

    第三步计算:x++ ;    结果 x = 2; 

    第四步计算:y++;   前面赋值 y=1; y++ 后 y = 2;

    第五步计算:++y;   前面 y++ 后,y =2 这里 ++y;  结果 y = 3;

        最后结果:x =2 ; y = 3 ; z = 1 


只要明白了,运算的优先权,就能很好的理解并计算

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-19
x++是先使用后计算所以z=1,++y是先计算后使用,经y++后是2,++y后是3,
第2个回答  2013-09-19
A)2,3,1正确。
第3个回答  2013-09-19
A,分清是先加后用还是先用后加就可。。。
第4个回答  2013-09-19
答案:A。

在C语言中 #include<stdio.h> main() {int x,y,z; x=y=1; z=(++x...
++x此时x=2 ++y此时y=2 x++运行时这个表达式已经是2了,运行结束后x=3 所以z = 2 + 2 + 2 = 6 所以结果是3,2,6

(42)有以下程序 #include 《stdio.h main() {int a,b,c=246; a=c\/1...
int x , y , z ;x = ( z=10 , z+15 ) ;y= ( x=3 , x+z) ;printf ( “ %d , %d , %d \\n” , x , y , z ) ;} 输出结果:11、#include “ stdio.h ”main ( ){char str[10] , temp[10]int k ;gets ( temp ) ;for ( k=0 ; k < 4 ; k++ ){ ge...

#include<stdio.h> main( ) { int x,y,z=2; x=z++; y=++z; printf...
y = ++z; --> 先z自加, 之后将 z 的值赋值给 y, 所以这行代码执行后: z 为4, y 为4

#include<stdio.h> void main() { int x,y,z; x=y=2;z=3; y=z++-1...
①int main()而不是void main()②printf时,内部的双引号必须是英文的,你用的中文的就要错。以下是大概修补后的代码。include<stdio.h>int main() {int x,y,z;x=y=2;z=3;y=z++-1;printf("%d\\t%d\\t",x,y);y=++x-1;printf("%d\\t%d\\n",x,y);y=z---1;printf("%d\\t%d\\...

#include<stdio.h> void main() { int x,y,z;x=y=1;z=(++x)+(++y)+...
z=(++x)+(++y)+(x++);原式相当于z=n1+n2+n3 先执行n1=++x 执行后,x=2,n1=2 再执行n2=++y 执行后,y=2,n2=2 然后是n3=x++ 执行后,n3=2,x=3 最后为z=2+2+2 得z=6

#include<stdio.h> void main() { int x,y,z; x=y=z=0; ++x||++y&&...
你是想问为什么输出的时候,y和z都不是1是吧。++x||++y&&++z,在执行时,||以及&&的优先级较低。所以先运行++x,然后执行||,此时x为1,所以已经正确了,就不需要执行后面的++y&&++z。所以y和z都保持不变。

#include<stdio.h> void main() { int x,y,z,t; x=y=z=1; t=++x||...
整个表达式的值为1(t=1)结果是x=2y=1z=1t=1 将第6行修改为 t=--x||--y&&--z;当判断++x时,x值为0,即假,所以||后面的表达式需继续判断。--y的值为0因为后面是&&,所以后半部分的值为0。所以,整个表达式的值为0(t=0)输出的是x=0y=0z=1t=0 ...

...#include<conio.h> main() {clrscr(); int x=5,y=10; printf(“%d...
汗,这种题目。。。首先printf函数就是定义在#include<stdio.h>里面的,没有把这个头文件包进去用不了printf这种输入输出函数。

#include <stdio.h> int x,y,z; void p(int x,int y) { --x; y++...
对main函数中局部变量x、y没有影响,因为形参不影响实参;对其中的静态局部变量z也没有影响,因为它没有被传入。但执行P(x, y)后,对全局变量x、y没有影响,因为它们被屏蔽了;对全局变量z有影响,因为它没有被屏蔽。综上所述,在main函数中,执行执行P(x, y)后,x、y、z均没有变化,故为3...

#include <stdio.h> main() { int x,y=7; float z=4; x=(y=y+6,y\/...
根据c语言的规范,x=(y=y+6,y\/z);是这样算的:(1)计算y+6并将结果赋给y (2)计算y\/z (3)将(2)的值赋给x 详细分析:(1)y为7,y+6为13,y为13.(2)y为13,z为float型4.0,y\/z时z自动变成整形4,13\/4按整形算是3(余1)(3)x为3 ...

相似回答