簡體   English   中英

關於 C++ 中運算符優先級的混淆

[英]Confusion about operator precedence in c++

我正在學習 C++,目前正在學習運算符優先級。 我正在使用以下示例。 把每一段想象成在不同時間運行的不同代碼段,而不是同一方法中的多個代碼塊。

int b = 4;
int result = ++b;

// In the above example the result will be 5, as expected.
int b = 4;
int result = ++b + b; 

// Here the result will be 10 as expected.
int b = 4;
int result = ++b + ++b;

這里的結果是 12。我不明白為什么。 編譯器不應該評估++b將 4 更改為 5,然后++b將 5 更改為 6,從而導致 5+6 = 11?

這是未定義的行為, 違反了順序規則

在前一個和下一個序列點之間,標量對象必須通過表達式的計算最多修改一次其存儲的值,否則行為是未定義的。

int b = 4;
int result = ++b + ++b;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM