簡體   English   中英

表達式“+ + a”是什么意思?

[英]What is the meaning of expression “+ + a”?

+ +之間有空格時,表達式“ + + a ”的含義是什么。 這個表達式是如何評估的?

    int main()
    {
        int a = 3;

        printf("%d %d", + +a, a);
    }

以及如何評估a+++a 它是未定義的還是未指定的或實現定義的?

這是一個無操作 - 兩次因為+ a是無操作而且重復。

a+++a被明確地解析為a++ + a ,但在執行時會導致未定義的行為。

注意,如果代碼設置為a = -3; ,打印的值仍然是-3 ,兩次。

++運算符中間有空格時,您只需應用一次加運算符兩次。

關於表達式a+++a ,C規范說當存在這樣的歧義時,盡可能地咀嚼(“貪婪的詞法分子”或“最大的笨蛋”規則)。 所以a+++a被評估為a++ + a

根據該規則,表達式如: z = y+++++x; 將被解析為z = y++ ++ +x; ,這是無效的(后增量的結果本身不是可遞增的)。

+a恰好與-a相反。
。換句話說,在-a將有符號相反a+a只是重新確認現有正/負號a

然后又有一個外部正面,仍然導致3。

相反的版本是:

printf("%d %d",- -a,a);

哪個是“負面否定3”......這又是+3

暫無
暫無

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

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