C语言入门 – 运算符

LongGuan_admin 发布于 6 天前 23 次阅读


运算符几元的含义

  • 这个运算符需要跟几个表达式一起使用
  • 一般情况下 一元 > 二元 > 三元
    • 一元: a++
    • 二元: a + b
    • 三元: a ? b : c

算数运算符

  • ++
    • a++ 先取值 后自增1
    • ++a 先自增1 后取值
int a = 7;
printf("%d", a++);
printf("%d", a);
int a = 7;
printf("%d", ++a);
printf("%d", a);
  • --
    • a-- 先取值 后自增1
    • --a 先自增1 后取值
int a = 7;
printf("%d", a++);
printf("%d", a);
int a = 7;
printf("%d", a++);
printf("%d", a);
  • +(加) -(减) *(乘) /(除) %(取余)
    • 整数相除只保留整数位
    • 小数与小数(整数)相除会强转成浮点数
    • 取余 只支持整型数据
printf("%d", 1 + 2);
printf("%d", 1 - 2);
printf("%d", 3 * 2);
printf("%d", 7 / 2);
printf("%d", 12 % 9);
  • += -= *= /= %=

关系运算符

  • < > <= >= == !=
    • != 逻辑非(取反)
// 逻辑非(取反)
    int age = 17;
    if (!(age >= 18)){
        printf("测试 \n");
    }
    int num = 0;
 // if (num != 0) // num 非0
    if (num) // 真是非0   假0
    {
        printf("num不等于零 \n");
    }
    if (num == 0)
    if (!num){
        printf("num等于零 \n");
    }
    

逻辑运算符

  • &&(与) ||(或)|(非)

惰性运算

  • &&的惰性运算
    • 表达式A && 表达式B
      • 若表达式A为假,表达式B不执行
int n = 77;
if(n > 90 && n++){

}
printf();// 上面利用&&的惰性运算,n++不执行
  • ||的惰性运算
    • 表达式A || 表达式B
      • 若表达式A为真,表达式B不执行
int n = 14
if(n < 18 || (n += 10)){
 
}
printf(); //上面利用||的惰性运算,n+=不执行

位运算符

按bit进行运算的运算符

  • ~ & | ^ << >>
  • ~
    • 按位取反……单目运算符,数据的每一个bit位取反
  • &
    • 按位与……,
  • ^
    • 按位异或……,

问:有几种方法交换两个变量的值

  • 中间变量法
int x ,y, temp; //使用中间变量temp作为中转值
  • 加减法
x = x + y;
y = x - y;
x = x - y;
  • 异或法
x = x ^ y;  
y = x ^ y;
x = x ^ y;

左移运算符

  • <<
    • 按比特位向左移
  • >>
    • 按比特位向右移
char b = 0x8f;
char a = 0x8f >> 3;
printf("%#x", b >> 3);//
printf("%#x", a);

    补充
        0x8f >> 3

        0000 0000
        0000 0000
        0000 0000
        0001 0001     0x11
    char num2 = 0x8f >> 3;
    printf("%hhx \n", num2); // 0x11;

    char num = 0x8f;
    // 1000 1111
    // 1111 0001    111
    printf("%hhx \n", num >> 3); // 0xf1

算数位移和逻辑位移

  • 算数位移
    • 有符号是算数位移
  • 逻辑位移
    • 无符号是逻辑位移

特殊运算符

  • 三目运算符
    • 表达式A ? 表达式B : 表达式C
    • 判断A是否为真
      • 如果A为真,返回B
      • 如果A为假,返回C
  • 逗号运算符(优先级最低)
    • (表达式1,表达式2……表达式n)从前向后运行
    • 返回逗号表达式最右边的值

运算符的优先级

  • 一般情况下 一元 > 二元 > 三元
    • 赋值操作低于上面的运算符
  • a++ b-- 优先级大于 --b ++a
  • * / % 高于 + -
  • && 高于 ||

此作者没有提供个人介绍。
最后更新于 2026-01-09