- 締切済み
VC++2005EEにて不可解な挙動
int j = 0; for( ; ; ){ printf( "%d ", j ); } printf( "hoge \n" ); 上記コードを無限ループで回したところ、表示されるのは 0の羅列ではなくhogeの羅列でした。 このような状況ってありえるのでしょうか? 環境はVisualC++2005 ExpressEditionです。 また、なぜかコンパイル中に上記のforのところで warning C4127: 条件式が定数です。 という警告が出ていましたがなぜでしょうか。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Oh-Orange
- ベストアンサー率63% (854/1345)
回答No.1
★アドバイス >0の羅列ではなくhogeの羅列でした。 ↑ 『hoge』が1回表示される理由は分かりますが羅列ですか? ・コンパイラの最適化により for 文の内部にある printf() 行は実行されないことがあります。 このため 0 の羅列が起きないのは分かります。でも『hoge』が1回の表示ではなくて羅列 するのは不思議です。なぜ。 >warning C4127: 条件式が定数です。 これも私の環境では警告メッセージは出ません。私のは VC++2003 です。EE ではない。 ・質問のソースは main() 関数内に記述されているのですか? それともサブ関数に記述してそれを複数回呼び出しているのですか? この辺が分かれば『hoge』が羅列する理由も分かる気がします。 もう少し全体像がわかるソースを補足して下さい。 ・以上。
お礼
ご回答ありがとうございます。 VisualC++特有のカウンタ変数のスコープ対策でやってた #define for ~ の記述がちょっと変でした。 無事、自己修正できました。