gpt4 book ai didi

c++ - for 循环中的 static_cast

转载 作者:行者123 更新时间:2023-11-28 06:47:49 26 4
gpt4 key购买 nike

我知道静态转换是在编译时处理的,但是在 for 循环的条件中进行静态转换呢?每次迭代都会进行强制转换,还是在编译期间只进行一次?我担心这个实现的成本。我知道编译器会自动转换类型,我只是想删除警告。例如:

double limit = 10.0;

for(int i = 0; i < static_cast<int>(limit); i++)
{
...
}

警告是:“从‘double’到‘int’的转换可能会改变它的值。”

最佳答案

doubleint 不是一回事,它们通常需要不同的寄存器,而且转换通常不是免费的。如果编译器能够证明 limit 在循环内没有改变,它可以将转换减少到在循环开始时完成一次。如果编译器可以证明 limit 等于 10.0,那么静态转换可能会在编译时被 10 替换。

关于c++ - for 循环中的 static_cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24636750/

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