• ベストアンサー

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はどういう意味でしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.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)

noname#156136
noname#156136
回答No.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 文は常に不成立です。 こんなプログラムはおかしいので、質問に書かれているプログラムそのものが誤っていると思います。 (もともと間違っているのか、質問時に正しく入力しなかったか)

関連するQ&A

専門家に質問してみよう