在C语言中 #include<stdio.h> main() {int x,y,z; x=y=1; z=(++x)+(++y)+(x++); printf("%d,%d...

在C语言中
#include<stdio.h>
main()
{int x,y,z;
x=y=1;
z=(++x)+(++y)+(x++);
printf("%d,%d,%d\n",x,y,z);}结果为什么是3,2,6的?

z=(++x)+(++y)+(x++)
我们拆开写,
++x此时x=2
++y此时y=2
x++运行时这个表达式已经是2了,运行结束后x=3
所以z = 2 + 2 + 2 = 6
所以结果是3,2,6
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-24
当z一行执行完毕后,x自增两次,最终为3;y在自增了一次,所以为2.
变量在一个表达式中的值一定是相同的,在z一行中,出现的两个x值都是2(在++x中自增,x++尚未执行),y自增一次也是2,所以z=2+2+2=6.
第2个回答  2010-06-24
z=(++x) + (++y )+ (x++)
先加后运算 先运算后加
z=2 + 2 +2(X已经变成2了)=6
x自加了两次 =3
y=2
第3个回答  2010-06-24
++在左边是变量先+1 再参加运算, ++在右是变量先参加运算,算完了再+1
分解步骤:
1 ++x, ++y
2 z=(2)+(2)+(2)
3 由于最后一个括号里(x++),算出Z的值后X再执行X++的操作,由2变成3。
4 最终 x=3 y=2 z=6
第4个回答  2010-06-24
请仔细阅读教材“自增”那一节。先加跟后加有什么不同。这里说不清楚。

#include "stdio.h" main() { int x,y,z; x=y=1; z=x++,y++,++y; pr...
include "stdio.h"main(){ int x,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\\n",x,y,z); } 其中x++是表明在执行完z=x后x才会自动加一,z=x++这条语句执行完后z=1,x=2 y++也是在这条语句结束后才会加一,这时y=2;++y,是在这条语句执行前y自动加一,这时y=3 所以结果...

...void main() { int x,y,z; x=y=1;z=x++,y++,++y; printf ("%d%d%d...
所以这个语句:z=x++,y++,++y;实际上等于:(z=x++),(y++),(++y);这样写的话相信楼主就知道为什么z=1了吧 楼主认为z应该是3的原因应该是把z=x++,y++,++y;当成z=(x++,y++,++y);了

#include <stdio.h> int main() { int x,y,z,t; x=y=z=1; t=++x||...
include <stdio.h>int main(){int x,y,z,t;x=y=z=1;t=++x||++y&&++z;printf("x=%d y=%d z=%d t=%d\\n",x,y,z,t);return 0;}运行结果:x=2 y=1 z=1 t=1 你说t是怎么算的?你呢应该是迷糊t=++x||++y&&++z;这个表达式是吧 好 你要搞清楚这个问题你就得知道运算符...

#include<stdio.h> void main() { int x=1,y; y=++x*++x; printf("%d...
2. 关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等 运算符的优先级:C语言中,运算符的运算优先级共分为 15 级。1 级最高,15 级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符...

#include<stdio.h> int main() { int x=1,y; y=++x*++x; printf("x=...
1,这是因为c99 标准没对一个语句中两个自增做规定,一条语句中两个自增在不同编译器编译结果不同。2, 编译器通常把同一变量放于某一通用寄存器,再把运算结果放于另一寄存器, 在这里显然是x再做了两次自增后放于一个寄存器,然后对其取平方的。

#include <stdio.h> main() { int x=1, y=2, z=3; if(x>y) if(y<z...
结果是1 if(y<x)不成立,不执行下面。直接执行else printf(“%d,x++),所以结果为1

#include<stdio.h>main(){ int x=10;int y=x++;printf("%d,%d...
简单啊,y=x++这一句话就实现了x=11然后才把结果给y,所以y也是11了,后面这个输出函数最后那里是先运行++y然后才运行前面那个()里面的东西,就是12了,别看输出的是12.12但是内存中变量x的真实值还是11哦。希望采纳

c语言#include <stdio.h> main() { int x=010, y=10; printf("%d,%d\\...
则 y=++x; 的意思是 先x=x+1; (此后x的值为3,y的值为0,)后 y=x; (此后x的值为3,y的值为3)(二)已知 x 的值为 2, y 的值为0 则 y=x++; 的意思是 先 y=x; (此后x的值为2,y的值为2)后 x=x+1; (此后x的值为3,y的值为2)...

C语言; int x,y,z; x=y=z=2; ++x||++y&&++z; printf("%
完成后由于短路效应,该计算树的右子树被抛弃,于是树根的值为1,计算完毕。这里举另外一个例子:x*y+z*(a+b)计算树如下:x*y+z*(a+b)x*y + z*(a+b)x * y z * (a+b)a + b

c语言逻辑运算 int x,y,z; x=y=z=0;++x||++y||++z;为什么结果等于 x=...
||运算符只要第一项为真之后的几项都不会计算,所以++y,++z都没有执行

相似回答