私は以下のプログラムを持っています。フォーマット指定子は、印刷するバイト数をどのように知っていますか?
#include<stdio.h>
int main()
{
char a='b';
int b=11299;
char d[4]="abc";
printf("value of a is %d\n",a);
printf("value of b is %c\n",b);
printf("value of c is %d\n",*d);
char *c=d;
c=c+1;
printf("c is %d\n",*c);
}
%dのフォーマット指定子と少し混同しています。私はそれが4バイトのデータを印刷すると考えていました。しかし、上記のプログラム(最初と最後のprintf)から、charパラメータが使用されたときには1バイトしか出力されないことが明らかです。なぜ%dは1バイトしか印刷しませんか?印刷するバイト数はどのように分かりますか?
これは 'printf'フォーマットについての基本的なMSVCのページ](https://msdn.microsoft.com/en-us/library/56e442dc.aspx)であります幅などの詳細にリンクしています。普通の '%d'指定子は、与えられた引数を必要なだけ多くの数字を使って' int'として表示します。 –
'a'が' printf() 'に渡されるとき、コンパイラによって' int'に宣言されます。 – alk
'char'は' int'に昇格します。 –