int x=5;求(++x)+(++x)+(++x),请解释一下,谢谢!
来源:百度知道 编辑:UC知道 时间:2024/06/02 22:24:08
int x=5;(++x)为6,明白
int x=5;求(++x)+(++x)为14,不明白,为什么呢?
int x=5;求(++x)+(++x)+(++x)为22,也不明白。
谢谢指点!!!
int x=5;求(++x)+(++x)为14,不明白,为什么呢?
int x=5;求(++x)+(++x)+(++x)为22,也不明白。
谢谢指点!!!
-_-!
这种自增运算跟编译系统直接有关,我用Dev-C++得到跟你一样的结果,但用Turbo C编译得到的第三个结果是24
用Turbo C得到的结果我能解释,但我实在不能解释22从哪里来。
说一下我的理解:(++X)+(++X)是先执行两次自增才进行()+(),三个括号的同理
这种写法,运行的结果跟编译器相关。
从C++标准上说,是不正确的。
谈谈(++x)+(++x)
如果,你想让x自增两次,输出为14,可以改为++x;++x;y=x+x;
如果,你想让x自增两次,输出为12,可以改为++x;y=x+x;++x;
如果,你想让x自增两次,输出为13,可以改为++x;y=x+x+1;++x;
……
方法有很多。
编译器把算式转换成逆波兰式再交由CPU进行运算,不同编译器处理方式不同,所以结果不同
(++x)+(++x) 被编译成逆波兰式(++x)(++x)+ 然后CPU计算过程:
1.计算两次++x,x=7
2.原式=>77+
3.计算77+=>14
(++x)+(++x)+(++x)可以从左开始编译成(++x)(++x)+(++x)+
运算时按上面 原式=>14(++x)+ (此时x=7)=>14 8 + => 22
也可以从右面开始编译成(++x) (++x)(++x)+ +,运算时,先三次++x,原式=>8 8 8 + + =>8 16 + => 24
《Effective C++》里有这方面的讨论
用tc 2.0好些,答案有冲突!
赞成;六楼的
用VC 6.0 编译答案和你的一样
拿分的!谢谢,不要骂我!没有人答就给我,再谢谢~
有下定义 int x=5,y;y=x--&&(++x)||x--;求X,y的值
x=1 for y +1 to 5 x=x*y endfor ?int(x/5),int(x/y) return 写出程序运行的结果?
java int x,y=5;x=++y;if (x==y) x*=2; if (x>y) x++; else x=y-1
c语言当中 int x=12求(x--/3)的值? 为什么/
int f(int x)是什么意思
2(x-3)(x+5)=x^2+(x-2)(x+2) 求x
关于 弦截法 求 X*X*X-5X*X+16X-80=0
int x,y;x=3.y=4.y=(x++,++x,x+y,x++).x=?,y=?
x,y 都是int, x++=y++ 为什么错?
请问int x,*p=&x;这样的形式对吗?