gpt4 book ai didi

c++ - static_cast 每次都会在 for 循环条件下运行吗?

转载 作者:搜寻专家 更新时间:2023-10-31 02:24:14 25 4
gpt4 key购买 nike

我有如下代码段

int name = 10;

for( size_t var = 0; var < static_cast<size_t>( name ); var++ )
{
std::cout << "hello" << std::endl;
}

在上面的代码中,每次检查for 循环中的条件时,转换也会发生很多次。我在想可能会有一些编译时优化。我正在使用 MS VS 2010。

注意:值名称可以静态初始化,也可以在运行时求值。

最佳答案

在无优化环境中,static_cast 确实会在循环的每次迭代中进行评估。

编译器很可能会在循环外优化它,如果它可以证明 name 的值在迭代之间不会改变。为确保这一点,请检查生成的程序集。

请注意,根据您的平台,强制转换可能是空操作。如果 intsize_t 大小相同(在 32 位平台上很常见),则转换没有与之关联的运行时成本。如果它们的大小不同(在 64 位平台上很常见),则可能涉及运行时操作。同样,要确定,请检查装配。

关于c++ - static_cast 每次都会在 for 循环条件下运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28279627/

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