簡體   English   中英

C / C ++中的運算符優先級和關聯性

[英]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.

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