gpt4 book ai didi

c++ - 乘以 100 万

转载 作者:行者123 更新时间:2023-12-02 16:20:03 24 4
gpt4 key购买 nike

为什么当你这样做时:

int a = 1000000 , b = 1000000;
long long product = a * b;
cout<<product;

它给出了一些随机的垃圾值?为什么 a 和 b 都需要 long long 才能计算它?

最佳答案

您正在观察 undefined behavior 的影响.这:

a * b   

int 类型的(算术)表达式,因为操作数 ab 都是 int 类型>。尝试将 1000000000000 的值存储到 int 中会导致所谓的有符号整数溢出,这是未定义的行为。

要么将其中一个操作数转换为long long,从而导致整个表达式to become long long,它足够大以接受 1000000000000 的值:

#include <iostream>

int main()
{
int a = 1000000, b = 1000000;
auto product = static_cast<long long>(a) * b;
std::cout << product;
}

或者定义其中一个操作数为long long:

#include <iostream>

int main()
{
long long a = 1000000;
int b = 1000000;
auto product = a * b;
std::cout << product;
}

可选地,使用 unsigned long 代替。

关于c++ - 乘以 100 万,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65742402/

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