Code 1:
int a = 0987654321;
printf("%d",a);
Code 2:
int a;
scanf("%d",&a);
printf("%d",a);
在这里,如果我们输入 0987654321,那么它会打印相同的内容,但在第一个代码片段中,它会给出一个错误,指出八进制常量中的值 9 无效。
使用 C 编写代码时可以使用多种表示形式 -
- 十六进制
(0x123A)
- Binary
(0b1011)
-- 标准 C 不支持,但是编译器提供的扩展,例如gcc
.
- Octal
(01237)
- Decimal
(1234)
——也许是最常见的。
您在这里使用的是八进制表示形式(因为它以0
)。意味着每个数字都是以 8 为基数。因此,后面的每个数字0
只能在范围内[0-7]
. 9
不是有效的八进制数字,因此编译器会抱怨。
如果您想实际使用十进制表示形式,您可以删除0
as -
int a = 987654321;
在第二个例子中它实际上工作得很好,因为scanf
with %d
始终以十进制表示形式扫描并且9
是有效的十进制数字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)