首页 > 后端开发 > C++ > 为什么 C 和 C 中过大的整数文字有时不默认为'int”?

为什么 C 和 C 中过大的整数文字有时不默认为'int”?

Patricia Arquette
发布: 2024-12-07 17:47:14
原创
501 人浏览过

Why Do Excessively Large Integer Literals in C and C   Sometimes Not Default to `int`?

整数文字:默认情况下并不总是 Int

在循环中迭代时,过大的整数文字可能会导致意外问题。通常,不带后缀的文字被解释为 int。然而,这个假设对于非常大的值可能不成立。

溢出和提升

当整数文字超过 int 的范围(通常是 32 位)时, undefined可能会导致行为(UB)。但是,在某些情况下,编译器可能会自动将文字提升为更大的类型,例如 long int(通常为 64 位)。

标准规范

C 和 C 标准都规定了整数文字的提升以适当types.

  • C: C99 标准第 6.4.4.1 节规定,文字类型是第一个列出的可以表示其值的类型(即 int、long int , long long int) 或扩展整数类型(如果需要)。
  • C : C 11 标准的 [lex.icon] ¶2 节同样指定根据需要提升为 long int 或 long long int。

示例

考虑整数文字 10000000000。在 C 环境中,这将被解释为 long int。但是,如果使用的编译器是 32 位编译器,则可能会导致编译错误,因为文字对于可用的整数类型来说太大。

以上是为什么 C 和 C 中过大的整数文字有时不默认为'int”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板