大家看看这道C语言题是怎么回事? (转载)# JobHunting - 待字闺中
c*t
1 楼
【 以下文字转载自 Programming 讨论区 】
发信人: cookiesweet (apple), 信区: Programming
标 题: 大家看看这道C语言题是怎么回事?
发信站: BBS 未名空间站 (Mon Apr 10 23:13:16 2017, 美东)
http://www.includehelp.com/c/operators-aptitude-questions-and-answers.aspx
3) What will be the output of following program ?
#include
void main()
{
int x=10;
x+=(x++)+(++x)+x;
printf("%d",x);
}
1. 44
2. 45
3. 46
4. 47
Correct Answer - 2
45
1) expand the expression : x=x+(x++)+(++x)+x;
2) due to pre increment ++x , x will be 11 for this expression.
3) after executing expression x will be 44.
4) finally x will be 45 due to post increment (x++).
弄不懂呀,到底这里 ++x, x++哪个先算?觉得x++应该先算,因为它先出现。可是解
释的正好相反。
我在电脑上编译run了一下这个代码,输出的就是45. 可是解释不通呀,
谁给看看。多谢
过去一直觉得对+这样的运算符都是从左到右。这题彻底颠覆了俺学了/用了几十年的
C语言的基本常识。很悲催呀。
发信人: cookiesweet (apple), 信区: Programming
标 题: 大家看看这道C语言题是怎么回事?
发信站: BBS 未名空间站 (Mon Apr 10 23:13:16 2017, 美东)
http://www.includehelp.com/c/operators-aptitude-questions-and-answers.aspx
3) What will be the output of following program ?
#include
void main()
{
int x=10;
x+=(x++)+(++x)+x;
printf("%d",x);
}
1. 44
2. 45
3. 46
4. 47
Correct Answer - 2
45
1) expand the expression : x=x+(x++)+(++x)+x;
2) due to pre increment ++x , x will be 11 for this expression.
3) after executing expression x will be 44.
4) finally x will be 45 due to post increment (x++).
弄不懂呀,到底这里 ++x, x++哪个先算?觉得x++应该先算,因为它先出现。可是解
释的正好相反。
我在电脑上编译run了一下这个代码,输出的就是45. 可是解释不通呀,
谁给看看。多谢
过去一直觉得对+这样的运算符都是从左到右。这题彻底颠覆了俺学了/用了几十年的
C语言的基本常识。很悲催呀。