Nir*_*ajT 0 c printf hex octal
我在printf语句中使用了下面的代码.
void main()
{
int n=0102;
printf("%d", n);
}
Run Code Online (Sandbox Code Playgroud)
这打印66作为答案.我还将变量n的值更改为012.它给出了答案10.请帮助我关于如何完成此转换?
这是因为当数字的第一个数字(整数常量)是0(并且第二个数字不能是x或X)时,编译器会将其解释为八进制数.打印它%d会给你一个小数值.
要打印八进制值,您应该使用%o说明符
printf("%o", n);
Run Code Online (Sandbox Code Playgroud)
整数常量以数字开头,但没有句点或指数部分.它可能有一个指定其基数的前缀和一个指定其类型的后缀.
十进制常量以非零数字开头,由一系列十进制数字组成.八进制常量由前缀0组成,可选地后跟一个数字0到7的序列.十六进制常量由前缀0x或0X后跟一个十进制数字序列和字母a(或A)到f(或F)分别由值10到15组成.
1. 十进制常数:不能以0.开头.
12 125 3546
Run Code Online (Sandbox Code Playgroud)
2. 八进制常数:必须以a开头0.
012 0125 03546
Run Code Online (Sandbox Code Playgroud)
3. 十六进制常量:始终以0x或开头0X.
0xf 0xff 0X5fff
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |