これ何て呼びますか Part2

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

A 回答 (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
    • good
    • 0

まず、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 文は常に不成立です。

こんなプログラムはおかしいので、質問に書かれているプログラムそのものが誤っていると思います。
(もともと間違っているのか、質問時に正しく入力しなかったか)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報