您的位置:首页 > 编程语言 > C语言/C++

c语言操作符小结

楚门的世界 2019-05-18 22:42 225 查看 https://blog.51cto.com/1423336
  • 算数操作符(+,-,,/,%)
    +,-,,正常运算就好,但"/"和"%"较为特殊需要注意!
    "/":
    1)当该符号两端数据类型都为int时,输出类型为int 。若符号两端数据类型不同时,则按精度小的类型进行计算。精度大的数被隐式类型转换(编译器自动转换)为精度小的类型。
    2)当除数为一个常数0时,编译器汇报编译错误。当除数为一个一个变量,变量的值为0时,编译通过但运行时会错。
    "%":
    1)该符号只针对int 整型有效。
    2)当符号右端为常数0或变量值为0时,情况与"/"相同。
  • 移位操作符(<<,>>)
    ps:不要对负数进行移位操作,这是未定义行为!
    "<<"左移操作符:
    1)按二进制移位;
    2)左移n位相当于十进制的*2的n次方;
    3)左边抛弃,右边补0;
    4)左移后原数值在没有被赋值的情况下是不变的;

    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    int num = 10;
    printf("%d\n",num<<1 );
    printf("%d\n", num);
    printf("%d\n", num=num<<1);
    system("pause");
    return 0;
    }

    结果为:

    ">>"右移操作符:
    1)按二进制移位;
    2)右移n位相当于十进制的 / 2的n次方;
    3)逻辑移位:左边补0,右边抛弃
    算数移位:左边补符号位,右边抛弃
    4)右移后原数值在没有被赋值的情况下是不变的;(情况同上,不再做过多赘述)

  • 位操作符(&,|,^,~)
    ps:按二进制位操作,操作数必须为整数
    "&":
    全1为1,否则为0
    "|":
    全0为0,否则为1
    "^":
    相同为0,相异为1
    "~":
    0变1,1变0
  • 赋值操作符( = )
    修改变量的值,可以连续连续赋值(例:a=x=y+1),但强烈不建议这么写,可读性差。
    ps:此处补充一点:赋值与初始化的区别
    赋值:修改值
    初始化:申请内存空间,放值到内存中
  • 复合操作符(+= ,-= ,*= ,/= ,%= ,>>= ,<<= ,&= ,|= ,^= )
    复合运算符与其他运算符功能一样,但可以使代码更简洁

    int x=10;
    x=x+10;
    x+=10;//复合赋值,效果与上式相同
  • 单目操作符(!,- ,+ ,& ,sizeof ,~,--,++,* ,(类型))
    "!"逻辑反操作
    "-"负值
    "+"正值
    "&"取地址
    "sizeof"操作数的类型长度(以字节为单位):
    编译过程中求值,运行时才申请内存
    "~"对一个数二进制按位取反
    "--"前置,后置 --
    "++"前置,后置++:
    前置后置的区别:
    a)不取表达式的值,等价
    b)取表达式的值:
    前置,返回自增(自减)后的值;
    后置,返回自增(自减)前的值
    " * "解引用操作符
    "(类型)"强制类型转换:
    此处会发生“截断”现象,即把一个占字节数多的变量赋值给一个占字节数少的变量,会把高位截断。把一个占字节少的变量赋值给一个占字节数多的变量,高位会进行补位(补符号位)

  • 关系操作符(> , >= ,< ,<= ,!= ,== )
    在前面已经介绍了这些操作符,在此不再赘述,注意 = 和 == 书写时不要出错即可。
  • 逻辑操作符(&& ,|| )
    "&&":逻辑与
    &&相当于and
    " || ":逻辑或
    || 相当于 or
    “短路求值”:
    对于&&,若左侧表达式值为假,那么右侧不再求值,整个表达式结果为假
    对于 || ,若左侧表达式值为真,那么右侧不再求值,整个表达式结果为真
  • 条件操作符(表达式1 ?表达式2 :表达式3)
    如果表达式1结果为真,则返回表达式2的值,否则返回表达式3的值
    ps:优先级最低!!!
  • 逗号表达式(表达式1,表达式2,表达式3)
    整个表达式的结果为最后一个表达式的结果。
  • 下标引用操作符( [ ] )
    数组名+索引值,调用数组的值
  • 隐式类型转换
    类似于char/short这样的类型,参与算数运算的时候会触发整型提升,即隐式转换为int 型再参与运算!
标签: