検索

ホームページ  >  に質問  >  本文

C++ Primer中关于前缀后缀递增的问题

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

*beg=toupper(*beg++);

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

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

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

大家讲道理大家讲道理2772日前362

全員に返信(1)返信します

  • 怪我咯

    怪我咯2017-04-17 15:03:05

    代入記号の両側で beg が使用されているため、未定義の動作が発生します。
    コンパイラは、左側の値を最初に実行するか右側の値を最初に実行するかわかりません。

    返事
    0
  • キャンセル返事