[英]Several unary operators in C and C++
使用以下表達式是否符合標准?
int i = 1;
+-+-+i;
以及如何確定i變量的符號?
是的。 一元+
和-
從右到左關聯,因此表達式被解析為
+(-(+(-(+i))));
結果為1
。
請注意,這些可以重載,因此對於用戶定義的類型,答案可能有所不同。
您的運算符沒有副作用, +i
對int本身不執行任何操作,並且您不使用臨時生成的值,而對則無作用的remove +
則執行-(-i)
巫婆等於i
本身。(在代碼中刪除+
將轉換運算符,我的意思是在計算中將其刪除,因為它沒有效果)
i
沒有被修改(C:不插入序列點| C ++:以不排序的方式),因此是合法的。 您只是與每個操作員一起創建一個新的臨時文件。
一元+
甚至不做任何事情,因此您所擁有的只有兩個否定項,它們只為該表達式給出1
。 變量i
本身從未改變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.