c语言学习笔记

241 阅读1分钟

a++是先用再加,++a是先加再用

单独使用时两者没有区别

如果为int a = 1

int b =++a,b的值为2

int b =a++,b的值为1

如果在int a = 1后加一行a++,则int b =a++后b的值为2

#include<stdio.h>
int main(){
    int a = 10;
    int b =++a;
    int c =a++;
    printf("%d,%d,%d",a,b,c);
    return 0;
}

运行结果为a=12,b=11,c=11

赋值

image.png 即a += 3等价于a = a + 3 a /= 2等价于a = a / 2

#include<stdio.h>
int main(){
    int a = 10;
    int b = 5;
    b += a;
    b -= 3;
    a -= b;
    a *= b;
    printf("%d,%d",a,b);
    return 0;
}

结果为a=-24,b=12

实际上,a++等价于a+=1

运算符

== :等于
!= :不等于
> :大于
>= :大于等于
< :小于
<= :小于等于

运算符的结果有1(成立)和0(不成立)

如int a = 3<2

此时a的值为0

#include<stdio.h>
int main(){
    int a = 3>2;
    int b = 2;
    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);
    printf("%d\n",a > b);
    return 0;
}

逻辑运算符

&& 与 两边都为真,结果才是真

|| 或 两边都为假,结果才是假

! 非 取反

  • &&:左右两边满足都不为0时得到1,否则为0

    结果为1的

printf("%d",1 && 2)

printf("%d",1 < 2 && 2 < 3)

printf("%d",1 && 2 % 1 == 0)

注:1 && 2 && 0结果为0,1 || 0 || 0结果为1

  • !:printf("%d",!1)得到0(用法:!(X<0))
#include<stdio.h>
int main(){
    int a;
    printf("请输入一个两位整数:");
    scanf("%d",&a);
    printf("%d",a % 10 != 7 && a / 10 != 7);
    return 0;
}