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

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

*beg=toupper(*beg++);

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

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

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

大家讲道理
大家讲道理

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

全部回覆(1)
刘奇

產生未定義行為是因為賦值符號左右都使用beg。
編譯器不知道先執行左邊的值還是右邊的值。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板