打印
[其他]

意想不到的八进制

[复制链接]
267|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AdaMaYun|  楼主 | 2024-7-30 12:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

将一个整形常量赋值给变量,代码如下所示:

int a=34, b=034;

变量a和b相等吗?

答案是不相等的。我们知道,16进制常量以’0x’为前缀,10进制常量不需要前缀,那么8进制呢?它与10进制和16进制表示方法都不相同,它以数字’0’为前缀,这多少有点奇葩:三种进制的表示方法完全不相同。

如果8进制也像16进制那样以数字和字母表示前缀的话,或许更有利于减少软件Bug,毕竟你使用8进制的次数可能都不会有误使用的次数多!下面展示一个误用8进制的例子,最后一个数组元素赋值错误:

a[0]=106;       /*十进制数106*/  
a[1]=112;      /*十进制数112*/   
a[2]=052;       /*实际为十进制数42,本意为十进制52*/


使用特权

评论回复
沙发
suncat0504| | 2024-7-30 19:50 | 只看该作者
八进制,在程序中很少用到了。作为知识点,掌握它还是很有必要的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

240

主题

1848

帖子

3

粉丝