C中的运算符++++[英] operator ++ in C++

问题描述

请帮我解释一下.
我正在使用 MS Visual C++6.0.首先我进行初始化:int i=5;
>如果我使用 printf("%d %d %d",i++,i++,i++) ;输出是 5 5 5
>如果我使用 cout<<i++<<i++<<i++;输出是 7 6 5 !
太混乱了!由于后增量运算符的残值定律,我认为输出必须是 5 6 7 !为什么是 7 6 5 - 一个相反的顺序?
而且 printf 和 cout 不一样,不知道为什么?

推荐答案

请帮我解释一下.
我正在使用 MS Visual C++6.0.首先我进行初始化:int i=5;
>如果我使用 printf("%d %d %d",i++,i++,i++) ;输出是 5 5 5
>如果我使用 cout<<i++<<i++<<i++;输出是 7 6 5 !
太混乱了!由于后增量运算符的残值定律,我认为输出必须是 5 6 7 !为什么是 7 6 5 - 一个相反的顺序?
还有更多, printf 和 cout 是不同的,但我想知道为什么?
我对此并不完全确定,但我猜这是因为 printf 有括号 - 它被解释为单个语句,参数不是一次全部接受 - 它们被处理with 因为它们被赋予 cout,所以第一个完成,递增,然后取第二个,打印后递增,等等...

实际上,我刚刚在 Cygwin 中运行它,它给了我(我初始化为 1):

1 2 3
4 5 6

我认为这可能与 VC++ 编译器有关...

实际上,我只是在 Cygwin 中运行它,它给了我(我初始化为 1):

1 2 3
4 5 6

我认为这可能与 VC++ 编译器有关...
是的,刚刚在 Ubuntu 上运行它并得到了

3 2 1(不过,我先 cout)
4 5 6(这是 printf 行)

本文地址:https://www.itbaoku.cn/post/1050497.html