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