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

Oxd*_*eef 6 c string boolean plural

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

int apple = 2;                                                                      
printf("apple%s\n", "s" + (apple <= 1));
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*her 11

因为条件的计算结果为0或1,并且字符串"s"在0终止符之前只包含一个字符.因此,"s" + bool将评估"s"if 的地址是否bool为false,以及后面的一个字符,如果为0则终止0地址的地址.

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