(int) + 4*5;
なぜこれ(値を持つ型の追加)が可能ですか?(g ++とgccで試してみました。)
私はそれが意味をなさない(そして効果がない)ことを知っていますが、なぜこれが可能であるのか知りたいです。
(int) + 4*5;
なぜこれ(値を持つ型の追加)が可能ですか?(g ++とgccで試してみました。)
私はそれが意味をなさない(そして効果がない)ことを知っていますが、なぜこれが可能であるのか知りたいです。
cppinsights
コンパイラフロントエンドの観点からコードがどのように見えるかを理解するのに役立つと呼ばれる便利なツールがあります。また、オンラインバージョンもあり、例について何が示されているかを確認できます(与えられた回答と同じ「括弧」)
+(int)+ 4*5;
し、-(int)- 4*5;
かつ-+-+-(int)-+-+- 4*5;
少ない詩的;
回答:
(+ 4)
はオペランドを作成し+4
ません。これは、オペランドに単項+
を適用することを意味します4
。これは、OPの場合は実際にはノーオペレーションですが、他の状況では整数の昇格または配列の減衰を引き起こす可能性があります。たとえば、char c = 0; sizeof +c == sizeof c
おそらく誤りでsizeof +"a"
あり、おそらく2ではありません。
42;
:-)
これはとして解釈され((int)(+4)) * 5
ます。つまり、式+4
(リテラルに適用される単項プラス演算子4
)はint
、Cスタイルのキャストで型にキャストされ、結果に5
。が掛けられます。
(int)-4*5