#include <stdio.h>
main()
{
int a=1,b=0,c,d;
c=(a++>0)||(--b>0);
d=(--b>0)||(a++<0);
printf("%d","%d","%d","%d",a,b,c,d);
}
补充:
3,-1,1,0
应该输出一横行
printf("%d,%d,%d,%d",a,b,c,d);
逻辑短路的情况在或运算里的提现就是只要第一个表达式为真就不会执行第二个表达式,所以因为a++大于0为真,所以c为1而执行完a++大于零后a的值为2,--b先自减b变为-1,而负一小于0第一个表达式为假,所以要执行第二个表达式,而a++小于零很明显也为假,所以d为假也就是零,而执行完a++ 小于零以后a的值变为了3,所以abcd分别为3,-1,1,0
点赞
扫一扫分享朋友圈
二维码
分享
你确定要删除这个问题吗?