在C/C++中使用scanf

Bet*_*moo 15 c c++ stdin scanf

要使用scanf读取int,我们使用:

scanf("%d", &i);
Run Code Online (Sandbox Code Playgroud)

如果int长不是int ??

注意:使用时ilong它给了我一个警告刺激性..

谢谢!

jpa*_*cek 25

只是用

long l;

scanf("%ld", &l);
Run Code Online (Sandbox Code Playgroud)

它给了我一个恼人的警告..

那个警告是对的.这是乞求堆栈损坏.


小智 6

看在上帝的份上:

long n;
scanf( "%ld", & n );
Run Code Online (Sandbox Code Playgroud)

  • 要添加到 Neil 的答案中,您不能依赖诸如“%d”之类的内容来读取“long int”,因为它指定的是“int”而不是“long (int)”。不仅如此,一些 64 位系统上的 `int` 大小为 32 位,而 `long (int)` 大小为 64 位。换句话说,您会将 32 位整数读入 64 位存储位置。一个例子是读取 2147483649。由于 32 位值被读入 64 位位置,其他 32 位将保留任何存在的值,因此如果您最初将 4294967296 存储在那里,您可能会得到类似 6442450945 的内容。 (2认同)