- ベストアンサー
c++
/* char03*/ #include<stdio.h> int main() { char i; for(i='!';i<='~';i++){ printf(%3d(0x%2X)--%c",i,i,i); if((1-'!'+1)%4==0 printf("\n") } printf("\n") return("\n") return 0; } if((1-'!'+1)%4==0はどういう意味でしょうか
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> for(i = '!'; i <= '~'; i++) { については ASCIIコード表を参照。 http://e-words.jp/p/r-ascii.html > if ((i - '!' + 1) % 4 == 0) { > printf("\n"); > } については「4で除算した余りが0のとき」ですから, 4文字分の情報を横方向に並べて印字したら,改行して次行に移っています。 タイプミスを修正した後の実行結果はこちら。 http://ideone.com/5Ed32
その他の回答 (1)
まず、if((1-'!'+1)%4==0 は左括弧と右括弧の個数が合っていないので、文法的に誤りです。 正しくは、if((1-'!'+1)%4==0) であるとして話を進めます。 ! (感嘆符)は、ASCIIコードで 33 (10進表記)なので、'!' = 33 です。 ASCIIコード表 http://e-words.jp/p/r-ascii.html つまり、1- '!' + 1 = 1 - 33 + 1 = -31 という答えになります。 % 4 は、4で割り算した余りです。 -31 を 4 で割っても割り切れない (余りが0ではない) ので、この if 文は常に不成立です。 こんなプログラムはおかしいので、質問に書かれているプログラムそのものが誤っていると思います。 (もともと間違っているのか、質問時に正しく入力しなかったか)