• 运算符的介绍及使用(篇二)


    1. sizeof 运算符
      基本类型所占内存大小:(Byte 字节)
      1 Byte(字节) = 8 Bit(位)

      sizeof(char) = 1 Byte
      sizeof(short) = 2 Byte
      sizeof(int) = 4 Byte
      sizeof(long) = 8 Byte //32 Bit OS 下大小为 4 Byte
      sizeof(float) = 4 Byte
      sizeof(double) = 8 Byte

      sizeof 是运算符,不是函数

      char cNum = ‘3’;
      //以下两种写法均为正确写法
      printf(“sizeof cNum = %ld ”, sizeof cNum);
      printf(“sizeof(cNum)= %ld ”, sizeof(cNum));

      sizeof int

    2. 类型转换
      int a = 3.98; //隐式类型转化
      printf(“a = %d ”, a); //a = ??

      a. 隐式类型转换
      当赋值号两侧数据类型不一致时,默认将右侧数据转化为左侧类型;
      b. 显示类型转换(强制类型转换)
      在需要转换的数据之气,加上需要转化的数据类型
      int a = (int)3.45679;

      float fNum = 3.1415926f;
      int iNum = (int)fNum;

      问:
      fNum = 3.141593
      iNum = 3

      强制类型转化并不改变变量的原有数据类型,只是做一次临时转化!!!

      转化顺序:有低精度向高精度转化
      char/short —> int —> long —> flaot —> double

    3. 算术运算符
      加(+)减(-)乘(*)除(/)
      取余运算(求模运算 %)
      m%n: m 对 n 求余

      整数相除结果仍为整数!
      % 运算的两个操作数必须为整数!!!

      3 % 2 = ?

      自增/自减运算符:
      ++ –
      int i = 3;

      i++:先取值,后自增
      int num = i++;

      num = i; //3
      i = i + 1; //4

      ++i:先自增,后取值
      int ret = ++i;

      i = i + 1; //4
      ret = i; //4

      i–:先取值,后自减
      int num = i–;

      num = i;
      i = i - 1;

      –i:先自减,后取值
      int ret = --i;

      i = i - 1;
      ret = i;

    4. 关系运算符
      大于(>) 大于等于(>=)
      小于 (<) 小于等于(<=)
      等于(==) 不等于(!=)

      运算结果:为真(1,true)或者为假(0,false)

      使用形式:
      表达式1 关系运算符 表达式2;
      若成立,则结果为 1,否则为 0

      int a = 12;
      int b = 10;
      int c = 55;

      int ret1 = 15 > a > 5;
      int ret2 = a < b < c;

      (1) 合法与否?
      合法表达式
      (2) 若合法,结果为多少?
      ret1 = 0;
      ret2 = 1;
      不合法,说明原因? (不考虑)
      (3) 考虑 a 的值是否会影响 ret1 的值???
      不管 a 的值是多少,其最终结果都为 0
      15 > a 其结果不是为 1,就是为 0
      不管是 1 还是 0 ,均小于 5

    5. 逻辑运算符
      逻辑与:&&
      使用形式:
      表达式1 && 表达式2;

      表达式1 和 表达式2 均为真,则整体结果为真,否则为假;
      即 && 两侧的表达式同时成立,则整体表达式才为真(1)

      逻辑或:||
      使用形式:
      表达式1 || 表达式2;

      表达式1 或者 表达式2 成立,则整体表达式成立
      即表达式1 和 表达式2 都不成立,整体结果才为 假(0)

      逻辑非:!
      !表达式;

      表达式为真,则结果为假,
      表达式为假,则结果为真。

    6. 条件运算符
      三目运算符 ?:

      使用形式:
      表达式1 ? 表达式2 : 表达式3;

      若表达式1 成立,则计算表达式2 的值,作为结果
      若表达式1 不成立,则计算表达式3 的值,作为结果

      a > b ? 1 : 0;

      思考:
      任意输入两个数,如何获取两数中的最大值??

      int max = (a > b ? a : b);

    7. 逗号运算符
      ,

      12,23,34,45

      逗号表达式,取最后一个表达式或者值,作为最终结果

      int a = 2;
      int b = 4;

      int ret = (a + 2, a++, b + 2, a + b);
      ret = 7

    8. 位运算符
      只针对于整数或字符型数据

      与:&
      对应位都为1 则结果为 1,否则为 0
      任何数与 0 相与,结果仍然为 0

      3 & 4 = 0
      0011
      &0100
      ---------
      0000

      12 & 7 = 4
      1100
      &0111
      -------
      0100
      或:|
      对应位只要有 1,则结果为 1,否则为 0

      4 | 3 = 7
      0100
      |0011
      ------
      0111

      13 | 9 = 13
      1101
      |1001
      -------
      1101

      任何数与 1 相或,结果仍为 1

      取反:~
      对应位若为 1, 则结果为 0,
      对应为若为 0, 则结果为 1

      原码:
      补码:
      反码:

      异或:^
      左移:<<
      右移:>>

    千里之行,始于足下!
  • 相关阅读:
    多读者多写者的无锁队列
    PCI设备的地址空间
    交换机能不能连接不同的网段?
    VMware Workstation的三种网络连接模式
    Linux内存寻址和内存管理
    Fragment基础信息传递
    Android Studio获取SHA1和MD5方法
    AppCan学习笔记数据存储及listview简单应用
    Fragment基础生命周期
    Fragment基础创建
  • 原文地址:https://www.cnblogs.com/MINAIot/p/13041019.html
Copyright © 2020-2023  润新知