考虑下面的代码段:有效使用条件运算符?
int i, k, m;
k = 12;
m = 34;
for (i = 0; i < 2; i++) ((i & 1) ? k : m) = 99 - i;
printf("k: %ld m: %ld\n\n", k, m);
在该傻示例,条件运算表达式为快捷方式:
if (i & 1) k = 99 - i; else m = 99 - i;
我的编译器不会抱怨并执行该代码段给出了预期输出
k: 98 m: 99
我的问题,虽然是如果这是根据C标准的有效代码?我从来没有见过像之前使用过的任何东西。
如果编译和执行不如预期,那么它最有可能有效。然而,你应该问自己,如果你想维护这样的代码,特别是如果它几年没有被触及,并且你必须弄清楚你回来5年后的行为。 – 2012-04-05 15:23:20