以下2个scanf语句之间的区别是什么
#include<stdio.h>
void main()
{
int a,b;
clrscr();
printf("\n Enter values for a and b");
scanf("%d",&a); // Format specifier as %d
scanf("%i",&b); // Format specifier as %i
printf("\n a is %d and b is %i",a,b);
getch();
}
我将值a设为10,b设为20.它给出与输出相同的值,
所以我的问题是
%d和%i之间有什么区别。??
每个变量的内存怎么样?
%d和%i之间是否有任何区别作为格式说明符???
答案 0 :(得分:2)
请参阅scanf的文档。为方便起见,%i
(整数)作为占位符意味着:
任意数量的数字,可选地以符号(+或 - )开头。 默认采用十进制数字(0-9),但0前缀引入八进制数字(0-7)和0x十六进制数字(0-f)。
...和%d
(十进制整数)表示:
任意数量的十进制数字(0-9),可选地以符号(+或 - )开头。
答案 1 :(得分:0)
请参阅“man scanf”的输出。
d Matches an optionally signed decimal integer; the next pointer
must be a pointer to int.
...
i Matches an optionally signed integer; the next pointer must be a
pointer to int. The integer is read in base 16 if it begins
with 0x or 0X, in base 8 if it begins with 0, and in base 10
otherwise. Only characters that correspond to the base are
used.
这意味着:%d只读取带符号的十进制整数。 %i读取有符号整数,十进制/八位/十六进制取决于您的输入。它以0x开头或0X为十六进制,开始0为八位,其他为十进制。