次のような式を使用することは標準に準拠していますか
int i = 1;
+-+-+i;
そして、i変数の符号はどのように決定されますか?
はい、そうです。単項式+
で-
右から左に関連付けるため、式は次のように解析されます。
+(-(+(-(+i))));
結果は1
.
これらはオーバーロードされる可能性があるため、ユーザー定義型の場合、答えが異なる場合があることに注意してください。
演算子には副作用+i
がなく、int自体には何もせず、一時的に生成された値を使用しませんが、それを削除+
しても何も行われず、-(-i)
witchはi
それ自体と同じになります(+
コードで削除すると演算子が変換されます。つまり、効果がないため計算)
i
は変更されていない (C: シーケンス ポイントを介在させずに |C++: 順序付けされていない方法で) ため、合法です。各オペレーターで新しい一時を作成しているだけです。
単項+
は何もしないので、あなたが持っているのは1
、その表現を与える2つの否定だけです。変数i
自体は決して変更されません。