在c中执行while循环条件

时间:2012-01-19 19:20:38

标签: c while-loop conditional-statements pic

下面的两个代码片段是否完全相同?

do
{
    Delay_us(1);
    status = fetchStatus();
}while(!status);

第二个片段 - >

do
{
    Delay_us(1);
}while(status = fetchStatus(), !status);

哪个更好?

6 个答案:

答案 0 :(得分:7)

你可以这样做:

do
{
    Delay_us(1);
} while( !fetchStatus() );

如果您使用它,则无需创建局部变量。

答案 1 :(得分:4)

是的,他们也这样做,但我更喜欢以下内容:

do {
    Delay_us(1);
} while (!(status = fetchStatus()));

因为它将所有内容简化为一个语句,而不是两个语句。

答案 2 :(得分:1)

它们具有相同的逻辑输出。在每种情况下都会分配状态然后进行评估,但第一种情况更具可读性。一般不要使用逗号运算符。

答案 3 :(得分:1)

它们是等价的。因为它们是等价的,所以两者都不是优选的。然而,有些人可能更喜欢美学,因为它更熟悉。

你真的打算在第一次检查状态之前推迟吗?

答案 4 :(得分:0)

我不是专家,但我相信我们正在进入编译器优化的领域。它实际上取决于您使用哪个编译器从该代码生成二进制文件。一个编译器可能会像第一个代码片段一样获取代码,并将其优化为二进制代码,从而有效地完成第二个代码片段的操作。

答案 5 :(得分:0)

怎么样:

for(; !fetchStatus(); Delay_us(1));