请考虑以下代码:
1.
uint16 a = 0x0001;
if(a < 0x0002)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
2.
uint16 a = 0x0001;
if(a < uint16(0x0002))
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
3.
uint16 a = 0x0001;
if(a < static_cast<uint16>(0x0002))
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
4.
uint16 a = 0x0001;
uint16 b = 0x0002;
if(a < b)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
backgorund中的编译器做了什么以及上面测试的最佳(和正确)方法是什么?
抱歉,但我找不到更好的标题:)
编辑:
值0x0001和0x0002仅是示例.可以改为任何2字节值.
先感谢您!
最后一个示例是最好的代码,因为您不应该在代码中使用"魔术常量".
事实上,最好的方法是使b const,(编辑)和使用有意义的名称:
uint16 currentSpeed = 0x0001;
const uint16 cMaxSpeed = 0x0002;
if (currentSpeed < cMaxSpeed)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
除此之外,你的例子之间"在引擎盖下"几乎没有什么区别.
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |