s*********g 发帖数: 849 | 1 #include
int main()
{
int i=5;
printf("%d %d %d %d %d",i++,i--,++i,--i,i);
return 0;
}
为什么输出是:4 5 5 5 5?倒数第2个为什么不是4? | c*********n 发帖数: 1057 | 2 这个和你的compiler有关,不同的compiler会有不同效果,c++ standard没有定义这个
behavior
【在 s*********g 的大作中提到】 : #include : int main() : { : int i=5; : printf("%d %d %d %d %d",i++,i--,++i,--i,i); : return 0; : } : 为什么输出是:4 5 5 5 5?倒数第2个为什么不是4?
| s*********g 发帖数: 849 | 3 gcc 和 visual studio都试过,一样。
【在 c*********n 的大作中提到】 : 这个和你的compiler有关,不同的compiler会有不同效果,c++ standard没有定义这个 : behavior
| S*******r 发帖数: 11 | 4 为什么第一个是4?
【在 s*********g 的大作中提到】 : #include : int main() : { : int i=5; : printf("%d %d %d %d %d",i++,i--,++i,--i,i); : return 0; : } : 为什么输出是:4 5 5 5 5?倒数第2个为什么不是4?
| l*******y 发帖数: 1498 | 5 同问,第一个为啥是4? 我试了一下确实是45555 | c*********n 发帖数: 1057 | 6 因为你的compiler是从最后一个argument开始push to the stack
但不是所有compiler都这么做
【在 l*******y 的大作中提到】 : 同问,第一个为啥是4? 我试了一下确实是45555
| l*******y 发帖数: 1498 | 7 got it.
但是这样的话,倒数第二个应该是4吧?
【在 c*********n 的大作中提到】 : 因为你的compiler是从最后一个argument开始push to the stack : 但不是所有compiler都这么做
| h**6 发帖数: 4160 | | p*********w 发帖数: 23432 | 9 这个涉及到运算顺序,堆栈顺序,
根本就是软件工程要回避的事情
不要学这类的问题
【在 s*********g 的大作中提到】 : #include : int main() : { : int i=5; : printf("%d %d %d %d %d",i++,i--,++i,--i,i); : return 0; : } : 为什么输出是:4 5 5 5 5?倒数第2个为什么不是4?
|
|