我很惊讶string plus boolean具有类似的三元操作效果:
int apple = 2;
printf("apple%s\n", "s" + (apple <= 1));
如果apple <= 1
,它会打印苹果。为什么这样做?
答案 0 :(得分:11)
因为条件的计算结果为0或1,而字符串"s"
在0终止符之前只包含一个字符。因此,如果"s" + bool
为false,"s"
将评估为bool
的地址,如果为{0},则{0}终结符的地址为{1}}。
这是一个很酷的黑客,但不要认真使用这样的代码。