web-dev-qa-db-ja.com

scanfを使用してlong intを読み取る

Scanfを使用してintを読み取るには、次を使用します。

scanf("%d", &i);

ilongではなくintである場合はどうなりますか??

注:%dlongとともに使用すると、イライラする警告が表示されます。

15
Betamoo

使うだけ

long l;

scanf("%ld", &l);

それは私に刺激的な警告を与えます。

その警告はかなり正しいです。これはスタックの破損を懇願しています。

24
jpalecek

たのむよ:

long n;
scanf( "%ld", & n );
6
anon
scanf("%ld", &i);

"%Ld"にはlong longを使用することもできます(コンパイラによっては、"%lld"も使用されます)。

詳細については、scanf manページのConversionsセクションをご覧ください。 (システムにマンページがない場合は、Googleで検索してください)。

3
Vineet

各変換指定子は、対応する引数が特定の型であることを期待しています。引数の型が予期される型と一致しない場合、動作は未定義です。 scanf()を使用してlongを読み取りたい場合は、%ld変換指定子を使用する必要があります。

long i;
scanf("%ld", &i);

オンラインの ドラフトC標準 (.pdfファイル)、セクション7.19.6.2、パラグラフ11をチェックして、サイズ修飾子と予想されるタイプの完全なリストを確認してください。

3
John Bode