gpt4 book ai didi

c - C编程中数据类型 `long`

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:38 27 4
gpt4 key购买 nike

有什么区别long int numberOfPoints = 131071100;long int numberOfPoints = 131071100L;

并且是一个赋值,例如int numberOfPoints = 131071100L;合法的?如果是的话,那和前两者有什么区别?

最佳答案

131071100这样的无后缀整数常量的类型是intlong intlong long int<中的第一个 其中可以表示它的值。 131071100 的值始终在数学上是正确的;只是它的类型不同(因为 long int 至少是 32 位,所以它总是 intlong int)。

L后缀的,是long intlong long int类型;同样,该值始终是正确的——并且 131071100L 始终是 long int 类型。

用不同数值类型的表达式初始化某种算术类型的对象是完全有效的。该值被隐式转换为目标类型。在这种情况下,由于目标类型是 long int,因此不存在溢出风险。

对于您的特定情况,唯一之间的区别

long int numberOfPoints = 131071100;

long int numberOfPoints = 131071100L;

是后者稍微明确一点;意思完全一样。

如果表达式比单个常量更复杂,则仍然需要 L 后缀。例如,如果您这样写:

long int foo = 1024 * 1024 * 1024;

那么每个常量 1024 都是 int 类型——整个表达式也是如此。如果 int 恰好是 16 位,则乘法将溢出,即使 数学 结果适合 long int。 (文字的类型根据其值进行调整;大型表达式的类型则不然。)为避免该问题,您可以这样写:

long int foo = 1024L * 1024L * 1024L;

关于c - C编程中数据类型 `long`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23069236/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com