A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 736010695 中级黑马   /  2014-10-12 11:00  /  888 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 736010695 于 2014-11-10 10:53 编辑

逻辑运算:
运算结果只有两个:真(输出结果是1)和假(输出结果是0)
分类:
1、逻辑与,表示方式为:条件1&&条件2,当左右两个条件都满足时,结果是真,输出为1,反之就输出为0

2、逻辑或,表示方式为:条件1||条件2,当左右两个条件一个满足时,结果就为真,输出为1,当||左右两个条件都不成立结果就为假,输出为0

3、逻辑非,表示方式为:条件,做条件为真时输出0,当条件为假时输出1,也就是说“取反”

#include<stdio.h>
int main()
{   
    //逻辑与:
    int a=10>3 && 7<6;
    printf("a=%d\n", a);、、结果是0,原因:7<6不成立,只要有一个不成立,在逻辑与里就为假,输出结果是

    int a=10 && 7;//输出结果是1,因为10和7都是非0数据,表示都是真,输出结果是1(输出时会警告的)

    int a=10&&0;//输出结果是0,因为右边0是假,所以输出结果是0

    //在逻辑与里,如果&&左边条件成立,再检测右边条件,如果左边条件不成立就直接输出0,表示不成立
    int a=10;
    int b=10;
    int c=a>5 && ++b>=11;
    printf("a=%d,b=%d,c=%d\n",a, b, c);
    //输出结果是a=10,b=11,c=1,原因:&&左边是a>5是成立的,&&右边++b>=11,因为++在前面先运算b+1,所以b=11,大于等于11也是成立的左右都成 立,所以c的值是1

    int c=a<5 && ++b>=11;   
    printf("a=%d, b=%d, c=%d", a, b, c);
    /*这个输出结果是a=10,b=10,c=0,原因:a的值是10,所以a<5是不成立的,&&后的就不在运算,直接输出结果为假,故此c为0,因为&&后面没有运算, 所以b的值还是以前的值,故此输出结果是a=10,b=10,c=0)*/

    //逻辑或:在逻辑或里,如果||左边条件成立右边条件就不在运算直接输出1,表示成立
    int e=0||10;
    print("a=%d\n");/*输出结果是1.因为&&左边是假,但右边是真,只要一个是假逻辑或就成立,输出结果就是1*/

    int f=10;
    int g=10;
    int h=(f>5)||(g++-10);
    printf("f=%d,g=%d/h=%d", f, g, h);
    //这个输出结果是f=10,g=10,h=1,原因:因为a的值是10,所以||左边成立,||右边就不在运算直接输出h为1,表示成立,因为||右边没有运算所以g还是原       来的数值

    int h=f<5||g++-10;
    printf("f=%d, g=%f, g=%d", f, g, h);
    /*这个输出结果是f=10,g=11,h=0,原因:h的值是10,a<5不成立,所以运算||后面的成立否,g++因为++在g前面所以g++-10值是0,但此刻g的值变成了11,两个都不成立所以h值为0*/

    //逻辑非:取反
    int j=!(10>8);
    print("j=%d\n",j);
    //这个输出结果是0,因为10>8是成立的,反过来后就是不成立的,所以输出为0

    int j=!10;
    print("j=%d\n",j);
    //这样写也是允许的,输出结果是0,因为10为非0,表示真,反过来后就是假

    int j=!10>8;
    print("j=%d\n",j);
    //根据关系符的优先等级,先算!10结果是0,再算0>8,不成立,所以结果是0

    int j=!!!10;
    print("j=%d\n",j);
    //这样写也是允许的
    return 0;
}


评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马