gpt4 book ai didi

c - "Lower precision in wider context"警告实际上是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:28 25 4
gpt4 key购买 nike

我有以下代码,适用于 int 为 16 位且 long int 为 32 位的嵌入式平台:

#define MULTIPLIER 0x1000

static void my_function(uint16_t i, void *p)
{
uint32_t start = MULTIPLIER * i;
...
}

我的编译器给我警告:

Warning 1 : lower precision in wider context: '*'

对于这一行。

这到底是什么意思?我可以通过将 #define 更改为

来使警告消失
#define MULTIPLER 0x1000ul

(明确将其设为无符号长整型)但我想了解该警告。

最佳答案

警告您乘法将使用 16 位值进行,然后 16 位结果将转换为 32 位结果。这可能不是您所期望的(16 位乘法可能会溢出),因此会出现警告。

This forum posting涵盖问题

关于c - "Lower precision in wider context"警告实际上是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3335605/

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