次のコードが出力されます。
書式#include <iostreamの> 使用して 名前空間はstdを、 INT )(主 { int型 I = 3、J = 3 。 printf(" %d個、%d個の\ nを"、++ I、I ++ ); coutの << ++ J << " " << ++ J << てendl; リターン0 ; }
5,5
5,5
ルックのコンパイル
それは見つけることができる 結論いずれかを:計算が完了した後、後続の出力でのみプッシュを行います。
これが起こります:
書式#include <iostreamの> 使用して 名前空間はstdを、 INT )(主 { int型 I = 3、J = 3 。 printf(" %d個、%d個の\ nを"、++私は、私は++します); coutの << ++ J << " " << J ++ << てendl; リターン0 ; }
5,3
5,3
ルックのコンパイル
図から分かるように、私は++前に一時変数の内容を印刷するとき、iの値は、一時的なバリアブルプリントに保存されています。
結論2: printf関数とCOUTは右から左へと連続的に計算されます。
後者の結論について、私はhttps://en.cppreference.com、説明が不定になることがあります見つけるコンパイラ固有の実装を見ていない、コンパイラVSとGCCが使用するテストでは、これらの結論になってきました!