首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

哪位高手可以给小弟我详细解释一下

2012-03-12 
谁可以给我详细解释一下intx1,yy++x*++x和y++x*++x*++xy的值各是多少为什么是这个值??[解决办法]int

谁可以给我详细解释一下
int   x=1,y;
y=++x*++x;

y=++x*++x*++x;
     
y的值各是多少       为什么是这个值??

[解决办法]
int x=1,y; //初始化,此时x=1, y未知

y=++x*++x; //首先,++x,此时x=2,然后再++x,此时x=3,然后x * x = 9, y = 9



y=++x*++x*++x; //同上,这个是27

之所以这样计算的原因是,++的优先级要比*的优先级高,所以先算++,后算乘法


[解决办法]
y=++x*++x; //首先,++x,此时x=2,然后再++x,此时x=3,然后x * x = 9, y = 9



y=++x*++x*++x; //同上,这个是27

我写的答案是指这两条都是单独的与

int x = 1, y;

组合哦,可不是三条语句连在一起的结果!
[解决办法]
看编译器
[解决办法]
9 ++运算优先级最高,进行2次x从1变为3,再进行乘法运算,取出x的值都为3
216 类似上面,x=3进行3次++运算,x变为6,然后取值相乘,得到216
[解决办法]
没什么意义。
编译器不同,答案自然不同!
[解决办法]
the answer isnt unique due to the compiler!
[解决办法]
这里主要是一个优先级的问题,1楼已经说的很明白了,
对于编译器来说,*比++优先级小,所以x的值每次都要先加之后再进行*运算
所以
y=++x*++x;

y=++x*++x*++x;
分别的值是9和27

[解决办法]
把别人弄糊涂的程序员是可耻的
把自己弄糊涂的程序员是可怜的

这种代码没有研究的必要,只要研究它就是走错了,这是很多人都说过很多遍的
只要你不写出这样的代码就可以了

注意:结果是编译器相关的,所以sjwlong的答案也是错误的,答案就是没有答案,不同编译器结果不一样
[解决办法]
同意楼上
但是一楼的不敢苟同
按一楼所说那么y=++x*++x*++x;
应为64
[解决办法]
注意:结果是编译器相关的,所以sjwlong的答案也是错误的,答案就是没有答案,不同编译器结果不一样
经典

热点排行