第二节,运算符相关

算术运算符

  • + 加号
  • - 减号
  • * 乘号
  • / 除号
  • % 取余
  • ++ a++ = a=a+1
  • -- a-- = a=a-1
// 实例:
#include <stdio.h>
int main()
{
   int a = 10, b = 20, c;
 
   c = a + b;
   printf("a+b, c的值是: %d\n", c );
   c = a - b;
   printf("a-b, c的值是: %d\n", c );
   c = a * b;
   printf("a*b, c的值是: %d\n", c );
   c = a / b;
   printf("a/b, c的值是: %d\n", c );
   c = a % b;
   printf("a%%b, c的值是: %d\n", c );
   
   //后置++,--
   c = a++;  // 先赋值后加 1,c为10,a为11
   printf("a++后 c的值是: %d\n", c );
   c = a--;  // 先赋值后减 1,c为11,a为10
   printf("a--后 c的值是: %d\n", c );
   //前置++,--
   c = ++a;  // 先加 1后赋值,c为11,a为11
   printf("++a后 c的值是: %d\n", c );
   c = --a;  // 先减 1后赋值,c为10,a为10
   printf("--a后 c的值是: %d\n", c );
}
  • 执行结果:
a+b, c的值是: 30
a-b, c的值是: -10
a*b, c的值是: 200
a/b, c的值是: 0
a%b, c的值是: 10
a++后 c的值是: 10
a--后 c的值是: 11
++a后 c的值是: 11
--a后 c的值是: 10

关系运算符

  • == 恒等
  • <= 小等
  • >= 大等
  • != 不等
  • < 小于
  • > 大于
//实例:略

逻辑运算符

  • && 与,条件都为真才执行
  • || 或,条件其中一个为真就执行
  • ! 非,条件为假才执行
//实例:略

位运算符(了解)(二进制运算)

  • ^ 按位异或,两个操作数相同时,结果为0;不同则为1
  • & 按位与,两个操作数同时为1,结果为1
  • | 按位或,两个操作数只要有一个为1,结果就为1
  • ~ 按位取反,操作数为1,结果为0;操作数为0,结果为1
  • << 左移,用来将一个数的各二进制位全部左移N位,高位舍弃,低位补0
  • >> 右移,将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0

条件运算符

  • ? : 三元运算符,首先对表达式1进行检查,如果为真,则返回表达式2的值,反则返回表达式3的值;用法:
    • 变量 = 表达式1 ? 表达式2 : 表达式3;
    • 例如:a = (b>0) ? b : -b;

赋值运算符

  • = 赋值
  • += x += y 相当于 x = x + y
  • -= x -= y 相当于 x = x - y
  • *= x *= y 相当于 x = x * y
  • /= x /= y 相当于 x = x / y
  • %= x %= y 相当于 x = x % y

运算符优先级

  1. 函数计算优先。
  2. 其次是强制类型转换。
  3. 自增、自减和取反次之。
  4. 先乘除再加减。
  5. 有括号先算括号内的。
  • 注:同一优先级的运算符,运算次序由结合方向所决定。
  • 也可以这样记:
    • !> 算术运算符 > 关系运算符 > && > || > 赋值运算符

数据类型转换

  • 强制类型转换:就是显示的将表达式转换成所需类型。
    • 强制类型转换不会改变原来的变量和表达式的类型属性,只是转换成所需类型使用。
    • 例如:
    #include <stdio.h>
    int main()
    {
        int m, n;
        float x = 2.5, y = 4.8;
        m = (int)(x+y);  //强行将浮点型转为整型
        n = (int)x+m/3;  //强行将x转换成整型
        m = n%4;  //整数取余
        x = x+y;
        printf("m=%d, n=%d, x=%f, y=%f\n",m ,n, x, y);
        return 0;
    }
    
    • 执行结果:
    m=0, n=4, x=7.300000, y=4.800000
    
  • 隐式类型转换:整型、单精度型和双精度型的不同数值类型可以混合运算,在运算过程中就有隐式类型转换。
    • 转换按数据长度增加的方向进行,以保证数据精度不降低。比如int类型和double类型相加时,int类型就会被隐式转换为double类型,然后再进行运算
    • 在条件判断中,非布尔类型自动转换为布尔类型。算术类型的值为0,则转换为false;否则转换为true
    int x = 1.23; // 1.23是double类型,隐式转换为int
    float y = 66; // 66是int类型,隐式转换为float
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值