我也不知道 发表于 2016-8-6 15:07:34

逻辑运算符的实例问题

#include<stdio.h>
int main()
{
        int ia=10 ,ib=0;
        printf("the 1 is Ture,0 is False\n");
        printf("5<ia&&ib is %d\n",5<ia&&ib);
        printf("5<ia||ib is %d\n",5<ia||ib);
        ib=!!ia;
        printf("ib is %d\n",ib);
        return 0;

}

显示的是0 1 1       但是我不懂第三个输出为什么是 1 还有前面两个的含义是什么?

zswang 发表于 2016-8-9 14:42:58

<的优先级高于&&和||
先算5<ia为真,1&&ib为假输出0
同理1||ib为真
第三个!ia为0,!0为1

fatbug18 发表于 2016-8-9 23:19:49

你可以去看看小甲鱼的算术符的优先级别
第一个:先算5是不是小于ia,得出是真值,即1。然后算1 && ib,即1且0,得出的是假值,即0,所以最终输出0
第二个:先算5是不是小于ia,得出是真值,即1。然后算1 || ib,即1或0,得出的是真值,即1,所以最终输出1
第三个: 等号是把右边的全部内容赋值给左边。ia是10,即真值(一切非0的数都是真值), !ia即非真值,那   么就是假值,然后再加一个!,就是非非真值,最终得出来的就是真值,即1.

iszhuangsha 发表于 2016-8-29 01:29:38

你去看一下逻辑算符的运算规则
页: [1]
查看完整版本: 逻辑运算符的实例问题