#include<stdio.h> void main() { int x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); }

(x+=x++,x+8,++x),括号内不是先算的x=x+x++,得x=10,原来的x变为6,再算x+8=14,再算++x得6,取最大十四,y不是应该=16的么?为什么答案是14;
如果(x+=x++,x+8,++x)改为(a+=x++,x+8,++x)的话答案就变为9 这个(x+=x++,x+8,++x)是怎么运算的呢

(x+=x++,x+8,++x) 逗号语句,【这里不等价于:x=x+(x++,x+8,++x)】,应该和编译器有关吧!
先算的x++,x+8,++x,得x=7,然后x=5+7,x就成了12了。
最后y=2+12=14追问

你的意思是=是最后赋值的么,先计算x++,x+8,++x?7怎么来的啊

追答

建议你看看运算符的优先级。逗号运算符,x++,x+8,++x到最后x=7;加了两次1。x+8是用来迷惑你的。

追问

?为什么说x+8,是用来迷惑的,加法是最后运算,括号这种不是最后取三个数值最大的么?还是一次运算过来 为什么x+8就不算呢

追答

这就是逗号运算的妙处了。你还没学逗号运算符吧?建议先去看看。这里的考点就是这儿。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-06
逗号运算,取最后一个的值

#include<stdio.h> void main() { int x=5; int y=2+(x+=x++,x+8...
(x+=x++,x+8,++x) 逗号语句,【这里不等价于:x=x+(x++,x+8,++x)】,应该和编译器有关吧!先算的x++,x+8,++x,得x=7,然后x=5+7,x就成了12了。最后y=2+12=14

#include<stdio.h> void main( ) { int x =5, y= 10; y++ ; x + =...
【结果】:x=0,y=12第一次:执行前x=30,y=0,满足循环条件;运算结束x=15,y=2;循环结束x=14,y=3第二次:执行前x=14,y=3,满足循环条件;运算结束x=7,y=5;循环结束x=6,y=6第三次:执行前x=6,y=6,虽然x

...执行下面程序的输出结果为 # include<stdio.h> void main() {...
void main 这个写法是错过的,这段程序在ide 编辑器下运行是会报错的,switch 函数也缺少已一个 } 同样会报错,在程序中case:4 后面y+=X 后面是 分号 而不是 冒号,报错。将上面的错误全部修改为正确之后,本程序没有不会输出结果,只是运行了,因为没有写输出函数,加上输出函数之后,输出的结果...

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

#include<stdio.h> void main() { int x=1,y; y=++x*++x; printf("%d...
1。i-- i 参与运算后,i 的值再自减 1。解答问题:x=1为初始化值.y=++x * ++x;第一个++x, x=2;第二个++x, x=3; 同样道理 第一个++x 也=3; 因为x的内存地址不变.第二个++x加了1后=3.第一个++x也会改变自身的值.所以:结果=9 在visual C++6.0编译后结果=9 ...

#include<stdio.h> void main() { int c=5; printf("%d,%d,%d\\n",c...
VC中printf的声明是int _cdecl printf (const char *format, ...)_cdecl声明printf参数入栈方式是从右向左入栈 VC6在处理时也是按照从右向左的顺序计算三个表达式的,所以结果就是 ++c为6 c+8为14 c+=c++为12 VC6生成的汇编是 mov dword ptr [ebp-4],5 mov eax,dword ptr [ebp...

#include <stdio.h> main() { int x=0; while(x++<=5) ; printf(“%d...
wile(x++<=5) 是先比较 再++;第一遍 x=0 while(x++<=5)===>0 < 5 继续循环 x=1;第二遍 x=1 while(x++<=5)===>1 < 5 继续循环 x=2;第三遍 x=2 while(x++<=5)===>2 < 5 继续循环 x=3;第四遍 x=3 while(x++<=5)===>3 < 5...

#include<stdio.h> void main() { char a='本金',b='年数',c='年利率...
main() {int x ;printf(“%d\\n”,(x=4*5,x*2,x+20));}A)20B)40C)60D)809.执行以下程序后的输出结果是( )。#include "stdio.h"void main(){int i = 0, j = 0, a = 6;if ((++i0)||(++j0)) a ++;printf("i=%d, j=%d, a=%d\\n", i, j, a);}A)i=0, j=0, a=...

#include <stdio.h> void main( ) { int I=2 , x=5 , j=7 ;
输出结果为1,11 ,1 x* 就是x乘以某个数 此处x=x*5;不是x=3*x+2;

#include<stdio.h> void main() { int x=5,y=6; float a; a=x\/y...
include<stdio.h> void main() { float x=5,y=6; float a; a=x+y; printf("%f\\n",a);\/\/%d是输出整型数据,a是float浮点型的,要用f }

相似回答