簡體   English   中英

C和C ++中的一些一元運算符

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

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