MINAIot  
  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\n”, sizeof cNum);
    printf(“sizeof(cNum)= %ld\n”, sizeof(cNum));

    sizeof int

  2. 类型转换
    int a = 3.98; //隐式类型转化
    printf(“a = %d\n”, 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

    原码:
    补码:
    反码:

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

posted on 2019-12-08 11:57  MINAIot  阅读(143)  评论(0编辑  收藏  举报