c中的八进制数

在C语言中,有一些与八进制数有关的不太为人所知的事实。让我们先看看下面的示例代码。

null

例如:

// program to show octal number interpretation
#include <stdio.h>
int main()
{
int x = 012;
printf ( "%d" , x);
return 0;
}


输出:

10

令人惊讶的是,输出不是12。这是因为前面有0的整数被解释为八进制数。十进制值12的八进制数是10。但是如果x等于092,那么编译器将显示一个错误,因为92不是有效的八进制数。

八进制 逃逸序列 在C语言中,八进制转义序列由后跟三个八进制数字表示。请注意,也允许使用一个或两个八进制数字。八进制序列结束于三个八进制数字之后,或者当后面的数字不是八进制数字时。

例如:

// program to show octal escape sequence
#include <stdio.h>
int main()
{
char str[] = "31 1267" ;
printf ( "%s" , str);
return 0;
}


输出:

31
67

如果我们查看输出,那么在31之后,将打印一个换行符,然后打印67。这是因为12被解释为或者换行符。实际上,12代表的是八进制转义序列或者新线。十进制中12的八进制值是10,而ASCII则表示换行符。

// program to show octal escape sequence
#include <stdio.h>
int main()
{
char str[] = "3112367" ;
printf ( "%s" , str);
printf ( "" );
char str2[] = "1177967" ;
printf ( "%s" , str2);
return 0;
}


输出:

31S67
11?967

在str 123中被解释为八进制转义序列,八进制123的值是83,在我的机器中对应的字符是“S”,因为我的机器使用ASCII。如果使用的字符集不是ASCII,则可能会有所不同。 在str2中,77被解释为八进制逃逸序列,而不是779。所以,77的十进制值是63,ASCII值是“?”。

本文由 阿什什·夏尔马 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享