在处理浮点时,应该使用
a <= 0.0
而不是
a == 0.0
以确保您获得所需的行为,因为在使用浮点变量时,round-off errors存在问题。
但是当使用像int
这样的其他变量类型时,做同样的事情会有用吗?就像您有一个遍历int
变量(如索引)的for循环一样,当它达到一个数字时,它应该执行一些操作。然后,当比较结果应该是相同的输出时,您是否应该将比较设置为>=
而不是==
?例如,在以下情况下,是否会出现不计算==
的情况:
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break;
}
}
这样做会更“安全”:
for (int i = 0; i < 10; i++)
{
if (i >= 5)
{
break;
}
}
如果在编写“安全”代码时两者之间没有区别,那么是否存在性能或可读性差异或其他可以让人在两种编码方式之间做出选择的东西?
我试着用谷歌搜索了一下,但是找不到任何说明。但这可能与搜索运算符的问题有关。
我问这个是不是太偏执了?
发布于 2018-10-23 02:13:40
答案是,这取决于。如果你有一个这样的循环:
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break;
}
}
那么跳过5
的i
就没有危险了。
另一方面,如果你有这样的东西:
volatile int i;
void interrupt(void)
{
i++;
}
void foo(void)
{
for (i = 0; i < 10; i++)
{
if (i == 5)
{
break;
}
}
}
则i
可能在程序的正常流程之外改变(例如,由于中断)。在这种情况下,>=
将是谨慎的。
https://stackoverflow.com/questions/52935297
复制相似问题