首页 > 后端开发 > C++ > 为什么 For 循环中的大整数文字的行为与预期不同?

为什么 For 循环中的大整数文字的行为与预期不同?

Linda Hamilton
发布: 2024-12-14 15:47:11
原创
1000 人浏览过

Why Do Large Integer Literals in For Loops Behave Differently Than Expected?

整数文字类型:默认不是 Int?

问题:

为什么for 循环迭代 100 亿次比迭代 1 次需要更长的时间

答案:

循环中的迭代变量是32位,溢出,导致无限循环。代表 100 亿的文字,尽管没有 L 后缀,也会被编译器自动提升到合适的范围(在本例中至少为 64 位)。

C :

根据 C 11 标准([lex.icon] ¶2),不带后缀的整数字面量的类型是第一个表 6 中的一个,其值可以表示:

Type
int
long int
long long int

因此,在这种情况下,文字被解释为 long int 或 long long int(如果 long int 是 32 位)。

C:

在 C99 中([§6.4.4.1]),规则类似。整数常量的类型由可以表示其值的类似列表中的第一个类型确定。

实现定义的类型:

两者都是 C 11 ( [lex.icon] ¶3) 和 C99 ([§6.4.4.1 ¶5]) 允许整数文字为“扩展整数”类型”(特定于实现的整数类型)如果没有找到其他有效类型。

以上是为什么 For 循环中的大整数文字的行为与预期不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

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