c/c++语言开发共享在C中存储以零开头的值变异,为什么?

例如:

int main(){ int x = 01234567; printf("n%dn",x); return 0; } 

以下代码生成:342391

如果我在开头没有包含0,那么值x将是1234567,为什么C以这种方式存储值并且有没有办法让它不这样做?

    因为以0开头的数字表示为八进制数 。 您无法真正修改此行为,只是不要在开头包含零。

    以0开头的数字常量被解释为基数8。

    用前导0写的整数常量被解释为八进制(base-8),而不是十进制(base-10)。 这类似于0x触发hex(base-16)解释。

    基本上你所能做的就是不要在整数常量上设置前导0。

    在编译时,C编译器将识别代码中的任何整数文字,然后通过一组规则解释这些文字以获取其二进制值供程序使用:

    应该注意的是,GCC 支持扩展 , 该扩展提供了用于以二进制格式指定整数的另一规则。 此外,这些规范方法仅在编译时支持整数文字。

      以上就是c/c++开发分享在C中存储以零开头的值变异,为什么?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(计算机技术网)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/544677.html

      (0)
      上一篇 2021年1月9日
      下一篇 2021年1月9日

      精彩推荐