C++ Primer中关于前缀后缀递增的问题
大家讲道理
大家讲道理 2017-04-17 15:01:05
0
1
363

在C++ Primer第四章第六节中有讲如下程序:
while(beg!=s.end() && !isspace(*beg))

*beg=toupper(*beg++);

将产生未定义行为,编译器可能按照下面的任意一种思路处理该表达式:

*beg=toupper(*beg);
*(beg+1)=toupper(*beg);

难道不应该是,在该行内使用未加一的beg,然后在下一行中再使用加一的beg吗?为什么会产生歧义?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all(1)
刘奇

Undefined behavior occurs because beg is used on both sides of the assignment symbol.
The compiler doesn't know whether to execute the value on the left or the right first.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template