gpt4 book ai didi

c++ - 这些片段中的每一个在编译器行为上有什么不同吗?

转载 作者:太空狗 更新时间:2023-10-29 19:47:16 24 4
gpt4 key购买 nike

请考虑以下代码:

1.

uint16 a = 0x0001;

if(a < 0x0002)
{
// do something
}

2.

uint16 a = 0x0001;

if(a < uint16(0x0002))
{
// do something
}

3.

uint16 a = 0x0001;

if(a < static_cast<uint16>(0x0002))
{
// do something
}

4.

uint16 a = 0x0001;
uint16 b = 0x0002;

if(a < b)
{
// do something
}

编译器在 backgorund 中做了什么以及进行上述测试的最佳(和正确)方法是什么?

附注抱歉,我找不到更好的标题 :)

编辑:

值 0x0001 和 0x0002 只是示例。可以有任何 2 字节值代替。

提前致谢!

最佳答案

最后一个例子在代码方面是最好的,因为你不应该在你的代码中使用“魔法常量”。

事实上,最好的方法是使 b 为常量,(编辑)并使用有意义的名称:

uint16 currentSpeed = 0x0001; 
const uint16 cMaxSpeed = 0x0002;

if (currentSpeed < cMaxSpeed)
{
// do something
}

除此之外,您的示例之间“在引擎盖下”几乎没有区别。

关于c++ - 这些片段中的每一个在编译器行为上有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2609539/

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