#include <stdio.h> int main(void)
{
int i = , j = , k = ;
printf("%d\n", ++i || ++j && ++k);
printf("%d %d %d\n", i, j, k);
}
运行结果为:
左边算子优先计算 ++i = 2 被下一个 printf 读取,|| 符号只会储存左边的运算值,右边新计算的值被遗弃。
如果程序变为:
#include <stdio.h> int main(void)
{
int i = , j = , k = ;
printf("%d\n", ++j && ++k);
printf("%d %d %d\n", i, j, k);
}
可以看到符号 && 两边的值都被储存,结果为
可见,符号 || 只会储存左边的值,而 && 会储存符号两边的值。