大佬教程收集整理的这篇文章主要介绍了我在下面写了一个 C 代码。我想解释为什么输出是 34 而不是 0 或 42,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想解释一下以下代码:
#include <stdio.h>
int main()
{
int x = 042;
printf("%d",X);
}
基数 8(八进制)中的 42 是基数 10(十进制)中的 34。
以零为前缀的数字文字在 C 中被解释为八进制。
将 042
更改为仅 42
。
给任何数字添加前缀 0 使其成为八进制数。 如果假设 x 等于 096,那么编译器将显示错误,因为 96 不是有效的八进制数。
int x=042;
printf("%d",X); /* output : 34
x is in octal representation but %d is used to print for decimal number,so 042 change to decimal */
printf("%o",X); /* output : 42
%o is used to print in octal representation */
此处使用了以下格式说明符:
%d - 以整数格式打印值
%o - 以八进制格式打印值
%x - 以十六进制格式打印值(字母将以小写形式打印)
%X - 以十六进制格式打印值(字母将以大写形式打印)
,在 C 语言中,以零为前缀的数字被认为是八进制。
ISO/IEC 9899:2018 para 6.4.4.1 整数常量适用
所以,042 是八进制 = 34 十进制。
以上是大佬教程为你收集整理的我在下面写了一个 C 代码。我想解释为什么输出是 34 而不是 0 或 42全部内容,希望文章能够帮你解决我在下面写了一个 C 代码。我想解释为什么输出是 34 而不是 0 或 42所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。