Scanfを使用してint
を読み取るには、次を使用します。
scanf("%d", &i);
i
がlong
ではなくint
である場合はどうなりますか??
注:%d
をlong
とともに使用すると、イライラする警告が表示されます。
使うだけ
long l;
scanf("%ld", &l);
それは私に刺激的な警告を与えます。
その警告はかなり正しいです。これはスタックの破損を懇願しています。
たのむよ:
long n;
scanf( "%ld", & n );
scanf("%ld", &i);
"%Ld"
にはlong long
を使用することもできます(コンパイラによっては、"%lld"
も使用されます)。
詳細については、scanf manページのConversionsセクションをご覧ください。 (システムにマンページがない場合は、Googleで検索してください)。
各変換指定子は、対応する引数が特定の型であることを期待しています。引数の型が予期される型と一致しない場合、動作は未定義です。 scanf()
を使用してlongを読み取りたい場合は、%ld
変換指定子を使用する必要があります。
long i;
scanf("%ld", &i);
オンラインの ドラフトC標準 (.pdfファイル)、セクション7.19.6.2、パラグラフ11をチェックして、サイズ修飾子と予想されるタイプの完全なリストを確認してください。