2013-09-04 13 views
10

最近、私は次のコードを使用しようとしていた。これは "= +"構文エラーではないでしょうか?

int number = 4; 
number += other_variable;//2 
... 
printf("Number:%d\n",number);//-->6 

を私はエラータイピングを持っていたし、代わりに私はこのコードを持っている:

int number = 4; 
number =+ other_variable;//2 
... 
printf("Number:%d\n",number);//-->2 

どうやらこれはgcc 4.7.3gcc 4.4.3としてコンパイル結果は通常の代入演算子と同じです。 質問は:これは構文エラーではありませんか?

+9

ダウンボックスとマークは少しひどいです。 OPはそれが単項プラス演算子であることを知らなかった。 –

+8

彼らは少し厳しいわけではありません、彼らは不寛容です。 – fiscblog

+1

そして、私はこれが 'どのような単項演算子ですか? 'と重複しているのを見ていません。 – KiaMorot

答えて

12

なしとしては解析されていません。あなたは=+と読んでいますが、それは2つの別々の演算子、=+です。

4

いいえ、それはただの操作ではありません。否定これらの操作を補完するものとして

number = +other_variable; 
number = 0 + other_variable; 

: - :

number = +other_variable; 

、すなわち、あなたが割り当てと単項+演算子を有する

number =- other_variable; 
number = -other_variable; 
number = 0 - other_variable; 
+1

-1、それは確かにそれがやっていることではない、それはそのオペランドの絶対値を計算していない。 – unwind

+1

@unwindちょうど私からの言葉が不十分で、私はそれが印を変えたということを意味しませんでした。 – user2586804

+0

@molbdniloちょうど私から言葉に慣れていない、私は '+'変更された記号を意味しなかったか、 '--'は負の記号を強制した。 – user2586804

0

いいえ、構文エラーではありません。

a=-b;と同様です。a=+b;も可能です。これは何の効果もありません(ビルトインタイプの場合はoperator+()のオブジェクトではもちろんここでは何かをすることができます)が、完全に有効なCコードです。

1

いいえ、それらは2つの独立した演算子です。

number = (+other_variable);

基本的なデータ型に適用される単項+演算子は、私の知る限りでは、元の値を返す以外何もしません。しかし、それは過負荷になる可能性があります。

単項演算子に対応し、符号を反転します。

number = (-other_variable);

関連する問題