运算符与表达式

运算符与表达式-【恒星】

运算符

  1. 算术运算符:+、-、*、/、%、++、--
  2. 赋值运算符:=、+=、-=、*=、/=、%=
  3. 关系运算符:==、!=、>、<、>=、<=
  4. 逻辑运算符:&&、||、!
  5. 位运算符:&、|、~、^ << >>
  6. 其他运算符
    1. 取地址:&
    2. 取地址指向的值:*
    3. 三目运算符:? :
  7. 运算符的优先级:()

表达式

  • 一目运算:只对一个参数运算的表达式;

    • !a 逻辑非
    • ~a 位非
    • a++ 自增
    • a-- 自减
    • &a 取地址
    • *a 取地址指向的值
  • 二目运算:对两个参数运算的表达式;

    • a + 1 两值算术运算:+、-、*、/、%
    • a = 1 赋值运算:=、+=、-=、*=、/=、%=
    • a == 1 关系运算:==、!=、>、<、>=、<=
    • a && 1 逻辑运算:&&、||、!
    • a & 1 位运算:&、|、^
  • 三目运算:对三个参数运算的表达式;

    • a ? 1 : 2 三目运算:? :

算术运算

算术运算符包括:

  1. 加 +:求两数之和;
  2. 减 -:求两数之差;
  3. 乘 *:求两数乘积;
  4. 除 /:求两数相除结果(可能有小数),但当两数都为整数,结果是整数商(保留整数部分,舍去小数部分);
  5. 求余 %:求两数相除之后的余数;
  6. 自增 ++:将变量增加 1;
  7. 自减 --:将变量减少 1;

自增和自减分前后:

  • 前自增 ++a:先将 a 加 1 后,再参与其他运算;
  • 后自增 a++:先将 a 原来的值参与其他运算,再加 1;
  • 前自减 --a:先将 a 减 1 后,再参与其他运算;
  • 后自减 a--:先将 a 原来的值参与其他运算,再减 1;
int a = 0;
a++;
printf("%d\n", a);    // 1
printf("%d\n", a++);  // 1
printf("%d\n", a);    // 2

int b = 0;
++b;
printf("%d\n", b);    // 1
printf("%d\n", ++b);  // 2
printf("%d\n", b);    // 2

int c = (++a) + (b++);
printf("%d\n", a);    // 3
printf("%d\n", b);    // 3
printf("%d\n", c);    // 5

赋值运算

赋值运算符包括:

  1. 等于 =:将右边的值赋给左边的变量;
  2. 加等于 +=:a += 3 是 a = a + 3 的简写;
  3. 减等于 -=:a -= 3 是 a = a - 3 的简写;
  4. 乘等于 *=:a *= 3 是 a = a * 3 的简写;
  5. 除等于 /=:a /= 3 是 a = a / 3 的简写;
  6. 模等于 %=:a %= 3 是 a = a % 3 的简写;

隐式转换和显示转换

  1. 隐式转换:就是编译器自动转换。
  2. 显示转换:就是编写代码要求强制转换。
  3. 数据类型从低级到高级的转换由编译器自动转换。
  4. 数据类型级别从高到低的顺序是:
    1. double
    2. float
    3. long
    4. int
    5. short
    6. char
int a = 1;
long long b = 231232131321;
b = a;      // 隐式转换
a = (int)b; // 显示转换
// printf("%lld %d", a, b); // 未显示转换会警告
printf("%lld %d", (long long)a, (int)b); // 显示转换
posted @ 2026-10-28 21:35  燕飞翔  阅读(11)  评论(0)    收藏  举报