5,自增自减,赋值运算符,关系运算符,逻辑运算符

0 阅读2分钟

自增:a++或++a 自减:a--或--a

#include    <stdio.h>
int main(){
    int a=1;
    //自增  可以用a++或++a 在运算过程中时,++a先加再运算,a++先运算再加
    int b = a++;//b的值为a自增前的值
    //++a 先加1 再使用a的值
    int c = ++a;//c的值为a自增后的值
    printf("%d\n",c);
    printf("%d\n",b); 
    printf("%d\n",a);



    return 0;
}
问题:在该代码中++a是在a++的前提下运算的 那么有没有什么办法让++aa++都以a为前提进行计算

##赋值:把等号右边的值保存到等号左边的变量

微信图片_2025-07-16_211346_064.jpg

#include    <stdio.h>
int main(){
    //赋值
    int a = 10;
    a = a + 1;
    //a += 1 该式与上式等效
    printf("%d\n",a);
    return 0;
}
a++与a+=1等效

练习题

#include<stdio.h>
int main(){
    int a = 10, b = 5;
    b += a;//b=15
    b -= 3;//b=12
    a -= b;//a=-2
    a *= b;//a=-24
    printf("a=%d,b=%d\n",a,b);

    return 0;
}

##关系运算符 微信图片_2025-07-16_213457_284.jpg

#include    <stdio.h>
int main(){
    //关系运算符
    int a = 10 ,b = 20;
    printf("%d\n",a == b);
    printf("%d\n",a != b);
    printf("%d\n",a > b);
    printf("%d\n",a < b);
    printf("%d\n",a >= b);
    printf("%d\n",a <= b);

    return 0;
}

58e3a33e8a08069b47381034d0fae924.jpg

##逻辑运算符

屏幕截图 2025-07-16 221937.png

#include    <stdio.h>
int main(){
//逻辑运算符
//&& || !
//运算结果:0(不成立)或1(成立)
//&&:两边都成立,结果才成立 (与,并且)
    printf("%d\n", 5 > 3 && 5 > 2);
    printf("%d\n", 5 > 3 && 5 < 2);
    printf("%d\n", -2 && -2);
    printf("%d\n", 0 && 0);
    printf("%d\n", 0 && 1);
//||:两边只要有一个成立,结果就成立 (或,或者)
    printf("%d\n", 5 > 3 || 5 > 2);
    printf("%d\n", 5 > 3 || 5 < 2);
    printf("%d\n", -2 || -2);
    printf("%d\n", 0 || 0);
    printf("%d\n", 0 || 1);
//!:取反,成立变为不成立,不成立变为成立 (非)
    printf("%d\n", !0);
    printf("%d\n", !1);
    printf("%d\n", !(-2>0));
    return 0;
}
 =代表赋值 ==表示等于
 

练习:输入一个两位数 该数子不能包含7 符合要求输出1 不符合输出0

#include    <stdio.h>
int main(){
    //输入一个两位数 该数子不能包含7 符合要求输出1 不符合输出0
    int num;
    printf("请输入一个两位数:");
    scanf("%d",&num);
    printf("%d\n", num / 10 != 7 && num % 10 != 7);
    return 0; 
}

短路

#include <stdio.h>
int main(){
    //&&的短路
    int a = 1,b=5;
    //a > 0 && b++;//b++被执行了该步骤为正确步骤
    a > 2 && (b++);//b++被短路了因为a>2为假
    
    printf("a=%d b=%d\n",a,b);

    return 0;
}
||(并)也可以短路   当前面的式子成立后 就不会算后面的式子了
例:3>0||b++ 中b++就被短路了 因为3>0成立 所以输出的结果就是1