gpt4 book ai didi

预处理器 block 中定义的 typedef 的 C 类型转换

转载 作者:行者123 更新时间:2023-11-30 18:36:46 25 4
gpt4 key购买 nike

我正在尝试修复此编译器警告:

warning C4244: '=' : conversion from 'double' to 'myRealVar', possible loss of data

myRealVar 在预处理器 block 中定义:

#ifdef SINGLE_PRECISION
typedef float myRealVar;
#else
typedef double myRealVar;
#endif

警告发生在基本上如下所示的行上:

someVar[a][b] = 1.0/sqrt(someVar[a][b]);

我尝试过 C 风格类型转换:(myRealVar) 但这似乎无法解决警告。我该如何正确解决这个问题?

编辑:这成功了。谢谢风向标和奥拉夫。不知道为什么我之前的 C 型类型转换尝试没有成功。

someVar[a][b] = (myRealVar)(1.0/sqrt(someVar[a][b]));

最佳答案

您需要转换 1.0 以及 sqrt 的返回值,以消除警告。两者的类型都是double

someVar[a][b] = (myRealVar)1.0 / (myRealVar)sqrt(someVar[a][b]);

关于预处理器 block 中定义的 typedef 的 C 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40244753/

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