c++中自增运算的一个例子 求解

发布时间:2024-04-28 00:12 发布:上海旅游网

问题描述:

#include<iostream>
using namespace std;
void main ()
{
int i=4;
cout<<i++<<","<<i<<","<<i++<<","<<++i<<","<<i++;

}

不是哪个书上的题目

我自己瞎想出来

运行了一下结果有点出乎意料

环境是v studio

求结果

与分析过程
我自己理论推出结果是
7,7,6,6,4

也就是说变成7 8 6 8 4
是因为我机器设置上的问题对么?

Sadusaga 你好:

“至于结果不同就是<< 在各个机器上的实现不同。”
“至于结果依据工程设置和STL库的具体实现会有不同。”

能详细解释一下好么?

或者推荐下这方面的书?

我会提高悬赏的哈

谢谢大家了

问题解答:

++在左侧,则先加一后取值,右面,则先取之后加一。

而且这里的<< 的顺序需要确定,如果是从右往前是一个结果,反之相反。

补充:
至于结果依据工程设置和STL库的具体实现会有不同。
我的运行结果是 7,7,6,6,4

原理是我说过的原理。

至于结果不同就是<< 在各个机器上的实现不同。

补充:
如果运算符没有问题的话,那你提出的问题就在于iostream中<<这里面做了什么。
_Myt& operator<<(int _X)
{iostate _St = goodbit;
const sentry _Ok(*this);
if (_Ok)
{const _Nput& _Fac = _USE(getloc(), _Nput);
fmtflags _Bfl = flags() & basefield;
long _Y = (_Bfl == oct || _Bfl == hex)
? (long)(unsigned int)_X : (long)_X;
_TRY_IO_BEGIN
if (_Fac.put(_Iter(rdbuf()), *this,
fill(), _Y).failed())
_St |= badbit;
_CATCH_IO_END }
setstate(_St);
return (*this); }

这段代码是<<的实现,要搞明白结果,你去仔细调试一下这段代码。会受益匪浅的。

没经过验算试着回答一下:
4,5,5,6,6

经过验证,输出是
7,8,6,8,4
是右运算?不懂

7,7,6,6,4
<< 是右运算符

热点新闻