我只是写了下面的代码行:正确使用
if (++(data_ptr->count) > threshold) { /*...*/ } // example 1
我的意图是递增的数据结构中的count
变量data_ptr
点然后再与threshold
进行比较,并且这一行代码有效。
如果我不是想在进行比较之前增加data_ptr
,我会写这样的:
if ((++data_ptr)->count > threshold) { /*...*/ } // example 2
出于好奇,我也试了这行代码:
if (++data_ptr->count > threshold) { /*...*/ } // example 3
而且发现它的行为与第一个完全相同。
第一个问题:为什么没有示例#3的工作方式与示例#1相同?这是运营商优先的问题吗?标准中的东西?我不得不写一个快速测试程序,因为答案对我来说并不明显。
第二个问题:我应该用不同的方式写这个if
陈述吗?我可以先在自己的行上执行增量,然后测试条件以避免任何可能的混淆。这是必要的,还是前两个例子自己显而易见?
1简洁。 '' –