文字コード
Posted: 2011年1月17日(月) 19:47
今勉強している「明解C言語 中級偏」という本でわからないことがあったので質問させていただきます。
本のサンプルコードに
#include <ctype.h>
#include <stdio.h>
#include <limits.h>
int main(void)
{
int i;
for(i=0;i<=CHAR_MAX;i++){
switch(i){
case '\a': printf("\\a"); break;
case '\b': printf("\\b"); break;
case '\f': printf("\\f"); break;
case '\n': printf("\\n"); break;
case '\r': printf("\\r"); break;
case '\t': printf("\\t"); break;
case '\v': printf("\\v"); break;
default : printf(" %c",isprint(i) ?i: ' ');
}
printf(" %02x\n",i);
}
return 0;
}
というコードがあり、「char型で表現できるすべての文字とコードを16進数で表示するプログラム」らしいのですが、
int 型の変数iを宣言して、for文でCHAR_MAX(255)までインクリメントしていくというのはわかるのですが、for文の中にあるswitch文の意味がまったくわかりません。
変数iが\aや\bなどになるはずが無いのになぜ、\aや\bが表示されるのでしょうか?
よろしくお願いします。
本のサンプルコードに
#include <ctype.h>
#include <stdio.h>
#include <limits.h>
int main(void)
{
int i;
for(i=0;i<=CHAR_MAX;i++){
switch(i){
case '\a': printf("\\a"); break;
case '\b': printf("\\b"); break;
case '\f': printf("\\f"); break;
case '\n': printf("\\n"); break;
case '\r': printf("\\r"); break;
case '\t': printf("\\t"); break;
case '\v': printf("\\v"); break;
default : printf(" %c",isprint(i) ?i: ' ');
}
printf(" %02x\n",i);
}
return 0;
}
というコードがあり、「char型で表現できるすべての文字とコードを16進数で表示するプログラム」らしいのですが、
int 型の変数iを宣言して、for文でCHAR_MAX(255)までインクリメントしていくというのはわかるのですが、for文の中にあるswitch文の意味がまったくわかりません。
変数iが\aや\bなどになるはずが無いのになぜ、\aや\bが表示されるのでしょうか?
よろしくお願いします。