2010-12-10 13 views
5
CおよびCでは

Possible Duplicate:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)
Undefined Behavior and Sequence Points (C++ FAQ entry)シンプルなパースの質問

++どのように表現x+++++yが解析されますか? x++ ++ +yまたはx++ + ++yとして?

+6

あなたは実際にそれを書いているとは思わないでしょうね。 *右?* ;-) –

+1

難読化されたコード競争に参入しますか? – jball

+0

jesus mary joseph – filipe

答えて

11

x+++++yは、x ++ ++ + yとして解析され、x ++ + ++ yではなく解析されます。 Maximal Munch principleによると、「トークナイザ1つの以上の文字がストップ・メイキング・センスして現在のトークンを引き起こし追加するまで、ソースファイルから文字を読んでおくべき

x++ ++ +yはポストインクリメント演算子ので(CおよびC++で)コンパイルしてはなりません++は、引数としてlvalueを必要とし、rvalueを返します。

+0

これは、欲張り/最長一致を使用するすべての言語で当てはまりますトークン化のための正規表現 - それらの大部分でなければなりません(実際には、私はそうではないと考えることはできません)。 – delnan

+0

* "x ++ ++ + y'はコンパイルしてはいけません" *実際には(gccの場合は):エラー:インクリメンタルオペランドとして必要な左辺値はありません。 –

+0

残念ながら、 '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++' MSVCは、少なくとも喜んでそれらのいくつかを受け入れ、その後、何があったのかをWTFは知っています。インターンには常に(私の決断ではなく)与えられた、私たちのこの小さな、社内の有用性があります。それはその場所のいたるところでそれのようなたわごとを持っています。 –

関連する問題