gpt4 book ai didi

c - 如何在不进行类型转换的情况下通过乘法避免整数溢出?

转载 作者:行者123 更新时间:2023-12-05 01:22:11 25 4
gpt4 key购买 nike

请考虑以下代码:

unsigned int var1 = 4294967295;

unsigned int var2 = 1000000;

unsigned int var3;

var3 = some_expression - (var1*var2)/some_expression;

错误:

在 var3 的表达式中,值:

(var1*var2) 被截断为 32 位整数(因为它是通过乘以 2 个 32 位整数获得的)。

可能的修复:

var3 = some_expression - ((unsigned long int)var1*var2)/some_expression;

问题:

Solaris NOT 接受此类型转换并抛出以下错误:

“请求转换为非标量类型”

我可以在不进行类型转换的情况下解决这个问题吗?

最佳答案

引入一个中间变量:

unsigned int var1 = 4294967295U;
unsigned int var2 = 1000000U;
unsigned int var3;

{
unsigned long int vartmp = var1;
vartmp *= var;

var3 = some_expression - vartmp/some_expression;
}

关于c - 如何在不进行类型转换的情况下通过乘法避免整数溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319030/

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