11-logical_operation_symbol

逻辑运算符使用

逻辑运算符&&,||和!

#include <stdio.h>
int main() {
    int i = 0;
    int j = 0;
    if ( ++i > 0 || ++j > 0 ) {
        printf("%d\n", i); //1
        printf("%d\n", j); //0
    }
    return 0;
}

#include <stdio.h>
int main() {
    int i = 0;
    int j = 0;
    if ( ++i > 0 && ++j > 0 ) {
        printf("%d\n", i); //1
        printf("%d\n", j); //1
    }
    return 0;
}

逻辑运算符的短路特性
||,&&从左向右开始计算,当前一个表达式的结果能决定整个表达式的结果,则后面的表达式根本就不会计算或调用;

#include <stdio.h>
int g = 0; //全局变量
int f() {
    return g++; //先用后加
}
int main() {
    if ( f() && f() ) { //程序短路
        printf("%d\n", g); //不被执行
    }
    printf("%d\n", g); //1
    return 0;
}
以上代码结果只打印一个1

!到底是什么

#include <stdio.h>
int main() {
    printf("%d\n", !0); //1
    printf("%d\n", !1); //0
    printf("%d\n", !100); //0
    printf("%d\n", !-1000); //0
    return 0;
}
C语言中的逻辑符!只认得0,只知道见了0就返回1;非零的都当作真,作用后都返回0;

三目运算符(a?b:c)可以作为逻辑运算符的载体
规则:当a的值为真时,返回b的值,否则返回c的值

#include <stdio.h>
int main() {
    int a = 1;
    int b = 2;
    int c = 0;
    /* int *p = NULL; */
    c = a < b ? a : b; //c = 1;
    //(a < b ? a : b) = 3; //不能做左值;
    *(a < b ? &a : &b) = 3; //合法
    /*
     * p = (a < b ? &a : &b);
     * *p = 3;
     */
    printf("%d\n", a);
    printf("%d\n", b);
    printf("%d\n", c);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值