gpt4 book ai didi

c++ - C/C++ 中的 long long

转载 作者:IT老高 更新时间:2023-10-28 12:01:25 25 4
gpt4 key购买 nike

我正在 GNU 的 C++ 编译器上尝试此代码,但无法理解其行为:

#include <stdio.h>;

int main()
{
int num1 = 1000000000;
long num2 = 1000000000;
long long num3;
//num3 = 100000000000;
long long num4 = ~0;

printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));
printf("%d %ld %lld %llu", num1, num2, num3, num4);
return 0;
}

当我取消注释注释行时,代码无法编译并给出错误:

error: integer constant is too large for long type

但是,如果代码按原样编译并执行,它会产生远大于 10000000000 的值。

为什么?

最佳答案

字母 100000000000 构成一个字面整数常量,但对于 int 类型而言,该值太大。您需要使用后缀来更改文字的类型,即

long long num3 = 100000000000LL;

后缀LL 使文字变成long long 类型。 C 不够“聪明”,无法从左侧的类型得出结论,类型是文字本身的属性,而不是使用它的上下文。

关于c++ - C/C++ 中的 long long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458923/

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