int sales[ 1 ];
do
{
scanf_s("%d", sales, 1);
printf("\n%d\n", sales[ 0 ]);
printf("\nyou got weekly income of $ %d\n\n", commision(sales[ 0 ]));
} while (sales[0] >-1);
と突然、別のint型出力容量とI入力INT(たとえば123 456)たびに、出力が販売され、なぜ私は、お願いしたいと思います[0] = 123、突然、それは自動的に売上に456を割り当てる[0 ]、 あなたはそれをなぜ説明できますか?スペース
私は参照していますが、ルールがchar型に適用されないのはなぜですか(例i入力ab [空白] d出力のみの販売= "ab"および[空白]の後の文字列は削除されましたか? と1私はまだ混乱して、コンパイラはどこに456を格納したのですか?最初に彼は123をsales [0]に割り当て、格納する変数は456になりません....最初のループが終了した後、 scanf文)、なぜscanfが突然456を取得するのですか?どこから来たのですか?私がworngなら正しいです –
"char型の適用"とはどういう意味ですか?あなたが 'scanf_s("%d "、sales、1)を実行している場合、' scanf_s'は引き続き入力を符号付き整数として解釈します。入力が解析され、有効な符号付き整数を形成する入力のすべての文字は、変数(ここでは 'sales')に"入れ "られます - すべての末尾のものは無視されます(' 42ab' = 42 '。上記の例のように、' sales'の型が 'char'型の場合、読み込まれる整数は32(大部分の' int's)または64ビットの代わりに8ビットです。 – mxscho
コンパイラはここで何もしません。プログラムの実行時に実行されます。 'do while'の' scanf_s'の2回目の実行では 'sales [0]'の値が*に置き換えられますので、 '123'は' 456'に置き換えられます。 – mxscho