我在 printf 语句中使用了以下代码。
void main()
{
int n=0102;
printf("%d", n);
}
这将打印 66 作为答案。我还将变量 n 的值更改为 012。它给出了答案 10。请帮助我了解此转换是如何完成的???
这是因为当数字(整数常量)的第一位数字为0
(第二个不能是x
or X
),编译器将其解释为八进制数。打印它%d
会给你一个十进制值。
要打印八进制值,您应该使用%o
说明符
printf("%o", n);
6.4.4.1 整数常量:
整数常量以数字开头,但没有句点或指数部分。它可能有一个指定其基数的前缀和一个指定其类型的后缀。
十进制常量以非零数字开头,由十进制序列组成
数字。八进制常量由前缀 0 组成(可选地后跟一系列
仅限数字 0 到 7。十六进制常量由前缀 0x 或 0X 组成
由十进制数字和字母 a(或 A)到 f(或 F)以及值组成的序列
分别为 10 至 15。
整数常量:
1.十进制常数: Must not开始于0
.
12 125 3546
2.八进制常数: 必须以 a 开头0
.
012 0125 03546
3.十六进制常数: 总是以0x
or 0X
.
0xf 0xff 0X5fff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)