先の質問でもそうですが、予想の前に、Cの文法をしっかり把握しましょう。
i=!10については、iが10以外の数字の時にこの条件は真になると思う
違います。Cの文法に沿って解釈するなら、
!は論理否定の演算子で、オペランドが0なら1を、0以外なら0を返します。なので、!10は0。
これをiに代入して、先の質問同様i=0の式の値は0。
for文のカッコ内2番めの式は、真(値が0以外)ならループ継続、偽(0)ならループ終了でfor文の次へすすみます。これが恒常的に0なのですからループには入らず、次へ進みます。このプログラムでは「次」はreturn 0;ですからmain関数から抜けてプログラム終了。
出力値が何も表示されませんでした。
プログラムは書いてあるとおりに動いているようです。
くれぐれも、=!
が!=
の間違いだった、直した、動いた、終わり...にしないように、ちゃんと「なぜ間違ったときにその動きになったか」は解析しておきましょう。そうでないと、間違った場所を変更してたまたま動いたからと直った「つもり」になってしまって本当の間違いが直っていなかった、なんてことになりかねません(現実としてよくあることです)。
また、「コンパイルは問題なくできており、エラーも出ていません。」なのに期待通りでないのが不思議...みたいに考えてしまうことがあるようですが、コンパイルが通らずエラーになるのは、コンパイルしたテキストがC言語の要件を満たさないプログラム未満のものでしかないというだけの話です。
コンパイルを通らないならそんなの話にならない、コンパイルは通って当たり前。それでやっと俎上に乗って、正しく動いているかどうかの話ができるようになるということです。
もし、コンパイルを通りさえすれば期待通りの結果が出るはずなら、int main(void){return 0;}
が最強の、なんでも思い通りになるプログラムということになってしまいますよ。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。