在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