鹏哥C语言71---逻辑操作符+条件操作符+逗号操作符

#define _CRT_SECURE_NO_WARNINGS

cpp 复制代码
#include <stdio.h>
#include <string.h>

//--------------------------------------------------------------------------------------------8. 逻辑操作符

// && 逻辑与 (全真则真,一假则假)-----生活中的并且

// || 逻辑或 (有真则真)-----生活中的或者

// 与按位与&,按位或 | 区分

// 逻辑与&&或 || 只关注操作数的真假

cpp 复制代码
int main()
{
    int a = 3;
    int b = 5;
    int c = 0;
    int d = 0;

    int m = a && b;
    printf("%d\n", m); //1
    int n = a && c;
    printf("%d\n", n);// 0
    int x = b || c;
    printf("%d\n", x);// 1
    int y = c || d;
    printf("%d\n", y);// 0

    return 0;
}

//判断闰年的的规则

// 1.能被4整除,不能被100整除

// 2.能被400整除

cpp 复制代码
int is_leap_year(int x)
{
    if ((x % 4 == 0 && x % 100 != 0)|| (x % 400 == 0)) // &&  ||
        return 1;
    else
        return 0;
}

int main()
{
    int year = 0;
    while(1)
    {
        scanf("%d", &year);
        int ret = is_leap_year(year);
        if (ret == 1)
            printf("是闰年\n");
        else
            printf("不是闰年\n");
    }
    return 0;
}

// && 逻辑与,左边为假0,右边就不计算了

// || 逻辑或,左边位真1,右边就不计算了

//-----------------------------------------------------------------------练习

cpp 复制代码
int main()
{
    //int i = 0, a = 0, b = 2, c = 3, d = 4;
    //i = a++ && ++b && d++; // a=0先使用后,0&&任何都为0,所以后边的不算了,不再运行
    //printf("a =%d b=%d c=%d d=%d\n", a, b, c, d); // 1 2 3 4

    int i = 0, a = 0, b = 2, c = 3, d = 4;
    i = a++ || ++b || d++;  
    printf("a =%d b=%d c=%d d=%d\n", a, b, c, d); // 1 3 3 4

    //int j = 0, x = 1, y = 2, z = 3, h = 4;
    //j = x++ && ++y && h++; 
    //printf("x =%d y=%d z=%d h=%d\n", x, y, z, h); // 2 3 3 5

    int j = 0, x = 1, y = 2, z = 3, h = 4;
    j = x++||++y||h++;
    printf("x =%d y=%d z=%d h=%d\n", x, y, z, h); // 2 2 3 4

    return 0;
}

//----------------------------------------------------------------------------------9. 条件操作符(三目操作符)

// 表达式1?表达式2:表达式3

// 真 执行 ×

// 假 × 执行

//-----------------------------------------------------------------------练习1

cpp 复制代码
int main()
{
    int a = 3;
    int b = 0;
    //if (a > 5)
    //    b = 3;
    //else
    //    b = -3;
// 改成三目操作符
    (a > 5) ? (b = 3) : (b = -3);
    b = (a > 5 ? 3 : -3); //更简洁

    return 0;
}

//三目操作符不必过于复杂//-----------------------------------------------------------------------练习2:使用条件表达式找两个数中较大值

//简简单单

cpp 复制代码
int main()
{
    int a = 0;
    int b = 0;
    scanf("%d %d", &a, &b);
    int max = (a - b > 0 ? a : b);
    printf("%d\n", max);

    return 0;
}

//-------------------------------------------------------------------------------------------------10. 逗号表达式

//表达式1,表达式2,表达式3,...表达式n

//逗号表达式,就是用逗号隔开的多个表达式,

//逗号表达式,从左到右依次执行。整个表达式的结果是最后一个表达式的结果!!!!!

cpp 复制代码
int main()
{
    //--------------------------代码1
    int a = 1;
    int b = 2;
    int c = (a > b, a = b + 10, a, b = a + 1);
    //c是多少 ?

    //-------------------------代码2
    if (a = b + 1, c = a / 2, c > 0)

    //-------------------------代码3
    a = get_val();
    count_val(a);
    while (a > 0)
    {
        //业务处理
        a = get_val();
        count_val();
    }
    //改用逗号表达式
    while (a = get_val(), count_val(a), a > 0)
    {
        //业务处理
    }

    return 0;
}

//------------------------------------------------------------------------11. 下标引用,函数调用,结构成员

//----------------------------------11.1 下标引用操作符 []

// 访问数组

cpp 复制代码
int main()
{
    int arr[10] = {0};
    arr[7] = 8; // []操作符   操作数是 arr 和 7
    *(arr + 7);// arr是数组首地址,arr+7就是跳过了7个元素,指向第8个元素,因此 *(arr + 7)也就是 arr[7]
    *(7 + arr);//加法交换律
    7[arr]; // []操作符   操作数是 7 和 arr

    return 0;
}

//----------------------------------函数调用操作符 ()

cpp 复制代码
//函数定义
int Add(int x, int y)
{
}

int main()
{
    int a = 10;
    int b = 20;
    //函数调用
    int c = Add(a, b); //  ( ) 函数调用操作符 ,操作数是 Add, a, b
    // ( ) 函数调用操作符,至少有一个操作符,就是函数名
    return 0;
}

//----------------------------------结构成员操作符 -> .

//结构体指针->成员

//结构体对象.成员

cpp 复制代码
struct Stu
{
    char name[20];
    int age;
    double score;
};

void set_stu(struct Stu* ps)
{
    //strcpy((*ps).name, "zhangsan");  //头文件 #include <string.h>
    //(*ps).age = 20;
    //(*ps).score = 100.0;
    //--------------------------------------------简化
    strcpy(ps->name, "zhangsan");// 操作符  ->                结构体指针->成员
    ps->age = 20;
    ps->score = 100.0;
    //   (*ps).age 等价于 ps->age  等价于 ss.age
}

void print_stu(struct Stu ss)
{
    printf("%s %d %lf\n", ss.name, ss.age, ss.score);  // 操作符 .             结构体对象.成员
}

int main()
{
    struct Stu s = { 0 };
    set_stu(&s);
    print_stu(s);

    return 0;
}
相关推荐
Lbs_gemini060314 分钟前
JAVA就业笔记3——第一阶段(3)
java·开发语言·笔记·学习
Ronin3051 小时前
10.模拟实现s
开发语言·c++
非著名架构师1 小时前
基于 Java 的天气预报系统设计与实现
java·开发语言·状态模式·开源气象大模型·气象大模型·leaflet可视化·era5数据
知识分享小能手2 小时前
mysql学习教程,从入门到精通,SQL 临时表(37)
大数据·开发语言·数据库·sql·学习·mysql·数据分析
T0uken2 小时前
【QT Quick】函数与信号处理:QML函数定义与调用
开发语言·qt·信号处理
小冉在学习2 小时前
leetcode 刷题day37动态规划Part06背包问题( 322. 零钱兑换、279.完全平方数、139.单词拆分、多重背包)
算法·leetcode·动态规划
我狠狠地刷刷刷刷刷3 小时前
最长子字符串的长度(一)
数据结构·算法
人才程序员3 小时前
CSP-J/S 复赛算法 并查集-Hash表
c语言·c++·算法·青少年编程·哈希算法·竞赛·csp
luthane3 小时前
python 实现DFS判断是否是二分图Bipartite算法
python·算法·深度优先
萧鼎3 小时前
Go 语言应用开发:从入门到实战
开发语言·后端·golang