gpt4 book ai didi

c++ - 正确修复转换和数据丢失警告?

转载 作者:行者123 更新时间:2023-11-28 08:25:51 25 4
gpt4 key购买 nike

我有一个名为 PointF 的类,它有一个采用 Point 的构造函数,我不断收到“可能丢失数据警告”。我如何证明我的意图实际上是将 float 值转换为 int 等?我尝试了 static_cast(float) 但他们没有修复警告。

例如:

int curPos = ceil(float(newMouseY / font.getLineHeight())) ; //float to int

outputChars[0] = uc; //converting from size_t to char

最佳答案

类型转换应该可以解决问题;上面写着“明确地将这种类型变成那种类型”,这对于编译器发出警告通常是非常愚蠢的:

int curPos = static_cast<int>(ceil(float(newMouseY / font.getLineHeight())));

或者:

outputChars[0] = static_cast<char>(uc);

确保您尝试的转换与此类似。你说“我试过...(float)”这让我相信你试过这样的事情:

int curPos = (float)(ceil(float(newMouseY / font.getLineHeight())));

什么都不做。表达式的类型已经是 float,将其转换为相同的类型会怎样?您需要将其转换为目标类型。


请记住,通常要避免转换。在您的第一个片段中,转换是明智的,因为当您量化某些内容时,您必然需要删除信息。

但是你的第二个 Actor 不是。为什么 uc 首先是 size_t?当 Actor 确实丢失信息时会发生什么?这真的是个好主意吗?

关于c++ - 正确修复转换和数据丢失警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115562/

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