C で間違った書式指定子を使用するとどうなるのだろうか?
例えば:
x = 'A';
printf("%c\n", x);
printf("%d\n", x);
x = 65;
printf("%c\n", x);
printf("%d\n", x);
x = 128;
printf("%d\n", x);
C で間違った書式指定子を使用するとどうなるのだろうか?
例えば:
x = 'A';
printf("%c\n", x);
printf("%d\n", x);
x = 65;
printf("%c\n", x);
printf("%d\n", x);
x = 128;
printf("%d\n", x);
C で間違った書式指定子を使用するとどうなりますか?
一般的に言えば、未定義の動作です。*
printf
ただし、は可変個引数関数であり、可変個引数関数への引数はデフォルトの引数の昇格を受けることを思い出してください。たとえば、 achar
は an に昇格しますint
。したがって、実際には、これらは両方とも同じ結果になります。
char x = 'A';
printf("%c\n", x);
int y = 'A';
printf("%c\n", y);
一方、これは未定義の動作です。
long z = 'A';
printf("%c\n", z);
対応する変換指定に対して正しい型でない引数がある場合、動作は未定義です。