const string加上布尔值在C中复数

时间:2012-07-01 00:39:46

标签: c string boolean plural

我很惊讶string plus boolean具有类似的三元操作效果:

int apple = 2;                                                                      
printf("apple%s\n", "s" + (apple <= 1));

如果apple <= 1,它会打印苹果。为什么这样做?

1 个答案:

答案 0 :(得分:11)

因为条件的计算结果为0或1,而字符串"s"在0终止符之前只包含一个字符。因此,如果"s" + bool为false,"s"将评估为bool的地址,如果为{0},则{0}终结符的地址为{1}}。

这是一个很酷的黑客,但不要认真使用这样的代码。