2016-09-30 2 views
4

文の場合、私は、次を含むプログラムに疑問を持っている:私は前にそのようなものを見たことがない= C++の+演算子ですか?

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

は、確かにそれはタイプミスではないでしょうか? = +実際に何かをしますか?

+2

私は誤植のように見えます。 – mascoj

+1

適度に高い警告レベルを使用している場合、まともなコンパイラがこのコードに対して警告を出すことに注意してください。 –

+0

実際にはC/C++演算子ではありませんが、C + = A * BではなくA * B = + Cを書くことができるようにしばしば望みました。 –

答えて

20
x =+ 4 

x= (+4) 

または

x=4 

単に

意味しかし、構文的に正しいとコンパイルすることができ、このような構成、あまり意味と x==4が意図されていたおそらくタイプミスを作るていません、特に、それがの条件として使用されること if

0

申し訳ありませんが、私の最初の答えは、愚かな質問の誤読によるものです。

正解が、これはそれがさらに、このプログラムの5

簡単な形式であればインクリメントそれを満足する非ゼロであるため、このコードは、単にX正4、 の値を代入され、その現在の状態は次のようになります。

x = 9; 

は、しかし、私は強く関与タイプミスとの条件のいずれかでなければなりません場合 x == 4x += 4または x != 4は、コンテキストに応じて内部の文があったと思います。

1

Cの初期の頃、=++=と同じでしたが、それはずっとずっとずっとC++には進出していません。


=+a= (+a)

が狭いタイプのものかどう単項+オペレータがそれ以外の場合はノーオペレーションません、intに引数を促進することと理解されます。

および=は通常の割り当てです。


あなたは、このように =+=の違いを工夫することができます

=は二回、たとえば、2つの特定のペアリングのためにオーバーロードされた場合は

{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(今ではヴィンテージのWebページです!)

、具体的に

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

それらが変更されたことを教えてくれる:用の「複合代入演算子i = -10(i = -10)と解釈されたような構成要素によって作成された意味的あいまい性を除去するために、op =(すなわち、=)をop =おそらく意図したi = -10(私は-10にする)の代わりに10で)。

明示的に+ veまたは-veという引数を付けることとは関係ありません。あなたは単に+ =の代わりに+ =を使うなど、現代の形に置き換えることができます。

+0

あなたはこれを賛成して、今や廃止された回答を削除することができます。また、Cを参照していることに注意してください。しかし、この質問はC++に関するものです。 – eis

+0

あなたの以前の「回答」を削除しました。これはフォーラムではありません。あなたの回答を改善する* [編集] *できます。 –