1

私はそれを得ることができません。Char は整数ですよね?だから私はできる

int var;
scanf("%d", &var);
I:[65]
printf("%c", var);
o:[A].

なぜそれをするのですか?

char var;
scanf("%d", &var);
I:[A]
printf("%d", var)
O:[-1236778]
4

1 に答える 1

1

第二にscanf()

scanf("%d", &var);

解析されたscanf()print ディレクティブ%d。これは、引数 &varが へのアドレスであると予想されることを意味しますint。代わりに a へのアドレスcharが与えられました。のサイズintは確かに のサイズよりも大きいですchar。「char」専用の場所scanf()にサイズを配置しようとすると、 scanf() がデータを配置すべきではない場所に配置する可能性があるため、奇妙なことが発生する可能性があります。int10 ポンドのポテトを 5 ポンドの袋に入れようとしています。

scanf("%d", &var);さらに、入力「A」 を正常に読み取れたかどうかは疑わしいようです。scanf()が表示され、数字ではないため、定義Aを満たすテキスト入力のスキャンを断念します。intしたがって、scanf("%d", &var)おそらく の値が返されたため、 には何も配置され0ませんでした。ベーコンを保存すると、データが配置されるべきではないスペースに配置されます。var

最後は、設定されていない をprintf("%d", var)単純に出力するだけなので、たまたま char に あったものが得られます。ありそうにない。投稿がコードや入力/出力と少しのペースで一致していないと思われます。var-1236778

于 2013-07-14T23:47:05.970 に答える