2016-09-30 63 views
4

我有一個程序問題,其中包括以下if語句:= C++中的+運算符?

if (x =+ 4){ 
    x += 5; 
} 

我以前從未見過類似的東西,肯定是不是一個錯字?確實= +實際上做了什麼?

+2

看起來像我的錯字。 – mascoj

+1

請注意,只要您使用相當高的警告級別,體面的編譯器就會爲此代碼發出警告。 –

+0

雖然實際上並不是C/C++運算符,但我經常希望它是,所以我可以寫A * B = + C而不是C + = A * B。 –

回答

20
x =+ 4 

意味着

x= (+4) 

或者乾脆

x=4 

雖然這種結構語法正確的,並且可以被編譯,並沒有多大意義,最可能是一個錯字,其中x==4之意,特別是它被用作條件if

0

對不起,我最初的回答是愚蠢地誤讀了這個問題。

正確答案,是這個代碼僅僅分配x的正4, 值,因爲這是然後非零它進一步由5.

這個程序中的一個更簡單的形式滿足如果和增量它其目前的狀態是:

x = 9; 

不過,我強烈懷疑有涉及一個錯字和if條件要麼是x == 4x += 4x != 4根據上下文中的聲明。

1

在C早期,=++=相同,但是很久沒有進入C++了。


=+a被理解爲是= (+a)

一元+操作促進了參數的int如果它是一個更窄的類型的,否則它是一個空操作。

=是定期任務。


你能湊合用這種方式=+=之間的差異:

如果=兩次超載了兩種特定配對,例如{Fooint}和{Foochar},和你有一個例子Foofoochar c,然後

foo = c // calls the overload taking a `char` 

foo =+ c // calls the overload taking an `int` 

調用不同的重載。

0

OK剛剛圓了這一點,我也發現,我的預感是正確的,= +和= - 是+ =和確實只是過時的形式 - =運在今天使用:

堆棧溢出:What does =+ mean in C? https://www.cs.auckland.ac.nz/references/unix/digital/AQTLTBTE/DOCU_064.HTM(現在這是一個老式的網頁!)

特別

https://en.wikipedia.org/wiki/C_(programming_language)#K.26R_C

告訴我們,他們正在改變:「複合賦值運算符的對(例如= - )改爲形式op =(也就是 - =)以去除由諸如i = -10的結構創建的語義歧義,其被解釋爲i = -10(遞減i由10)而不是可能的意圖i = -10(讓我爲-10)。「

所以它不是明確+ ve或-ve做一個參數。您可以簡單地替換現代形式,例如使用+ =代替= +。

+0

你可以刪除你的其他,現在過時的答案,以支持這個。還要注意你引用C,但這個問題是關於C++的。 – eis

+0

我已經刪除了你之前的'答案',這不是論壇,你可以* [edit] *你的答案來改進它們。 –