[英]Operator precedence and Associativity in C/C++
請注意,這與Operator Precedence ..()和++ , 未定義的行為和序列點無關, 為什么這些構造(使用++)是未定義的行為? 以及關於此的數百個類似問題
簡而言之 :標准保證了協會性嗎?
詳細示例 :來自Wikipedia的運營商優先級文章, operator*
和operator/
具有相同的優先級,它們是Left-to-right
運算符。 這是否意味着, 標准保證 ,這:
int res = x / y * z / t;
將被評估為
int res = ( ( x / y ) * z ) / t;
還是它的實現定義了?
如果有保證,你能引用嗎?
這只是出於好奇,我總是在這些情況下寫括號。
准備刪除問題,如果有這樣的話。
來自最新的公開草案
5.6乘法運算符[expr.mul]
1乘法運算符*,/和%組從左到右。
multiplicative-expression: pm-expression multiplicative-expression * pm-expression multiplicative-expression / pm-expression multiplicative-expression % pm-expression
所以解析會像:
int res = x / y * z / t;
int res = (x / y * z) / t;
int res = ((x / y) * z) / t;
n3337 5.6 / 1
乘法運算符*,/和%組從左到右。
讀5標准桿。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.