簡體   English   中英

C中的運算符優先級

[英]Operator precedence in C

在執行以下表達式時C prog中會發生什么:x = 4 + 2%-8; 它輸出的答案是6,但是我不知道該代碼段的實際執行方式?

在這種情況下,-是一元否定運算符(不是減法),由於它具有很高的優先級,因此與8文字緊密綁定。 請注意,形式上c中沒有負數文字。

因此,模量項被評估為2%(-8)。 模運算符的優先級與乘法和除法相同。

該語言沒有定義其執行方式,因為該表達式的順序不足以強制執行特定的執行計划(評估順序)。

我們可能會告訴您的是它的計算結果 由於您沒有為我們提供x的確切類型,因此實際上不可能說出整個表達式的計算結果。 因此,我將考慮限制在4 + 2 % -8子表達式中。

該子表達式分組為

4 + (2 % (-8))

由於在現代C中2 / (-8)0 ,因此2 % (-8)2 因此,上述子表達式的計算結果為6

PS請注意,在C89 / 90 2 / (-8)可以合法地評估為-1 ,而2 % (-8)評估為-6 整個結果將等於-2

表達式首先賦予%優先級,因此它求(2 % -8) = 2 ,然后再加上4 所以ans是4 + 2 = 6

這是給您的快速參考

一元-運營商在這里有最高的優先級。

%運算符的優先級等於/*運算符的優先級,因此比+運算符的優先級高。

底線4 + 2 % -8等於4 + (2% (-8))

暫無
暫無

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

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