C 语言的运算符介绍

来源:互联网 发布:淘宝打假套话 编辑:程序博客网 时间:2024/06/15 21:51

运算符:()最高  =最低  单目比双目高
    ()优先级最高
    = 赋值运算符的优先级最低
    < 的优先级比+的优先级低
   
    +(左结合)  -  *  /(向0取整,正数取小,负数取大)  %(两个操作数必须为整数) 
    =  +=  -=  *=  /=  //右结合
    ++  --
    >  <  >= <= == != 逻辑值(布尔)  真 假 (c语言不能表示逻辑真或者逻辑假的值,
       用0表示假,用非0表示真,通常用1表示)
        a = 3;
        b = 4;
        a > b;  逻辑假   0
        a < b;  逻辑真   1
     ,运算符
     表达式:a = b也有值,结果是:a, 4

  与        (全真为真,有假则假)
  或        (有真则真,全假则假)
  非        (相反)
 
 sizeof(类型/变量名/表达式):
    不会对表达式真正进行运算,而只关心类型。
    可以得到所有表达式的类型的大小。
   

运算符:
    () [] -> .     自左至右
    ! ~ ++ -- -  (类型)  *  &  sizeof:自右至左(单目运算符)

    1、()最高   =最低
    2、单目运算符比双目高
    3、双目运算符除了赋值运算符是自右至左  其他的都是自左至右的。
    4、三目运算符是自右至左的(? :)
        优先级仅高于赋值运算符和逗号运算符

  /:
    除以0会报浮点数例外,程序会直接终止。
 
  %:
    c99中规定是向0取整。
    余数的符号与被除数一致。

赋值运算符:
    i=j=k=0;  合法
    k=1+(j=i) 合法
   
    左值:
        存储在计算机中的对象,计算出来的临时值不可以作为左值。

运算符:
    ++:
    --:
    //很多情况下的结果与编译器有关,因此在用的时候最好没有歧义。
   
    eg:
       int i = 3,j = 3;
       int a = i++;  //运算结束时:a=3,i=4    先取值,再自加
       int b = ++j;  //运算结束时:b=4,j=4    先自加,再取值
   
逻辑表达式:(结果要么是0 要么是1)
    关系运算符:
        <  >  <=  >= 
    判等:
        ==   !=
    逻辑运算符:(与或非)
        !    &&    ||  
            1 && x = x
            1 || x = 1
            0 && x = 0
            0 || x = x
       注:
        只有逻辑与和逻辑或运算有短路特征,当表达式的值确定后就不再向后运算。
   
位运算:(按位运算)
    &:按位与:经常用按位与来测试某一位(用1与)
    |:按位或:经常用按位或来把某一位置1,也可以测试某一位(用0或)
        if(x | 0x8 ==x)
            printf("权值为8的是1");
       
    ^:异或 :把一个数反转。
             1 ^ x = -x
             0 ^ x = x
    ~:按位取反
        先加1,再符号位取反。
   
    <<:左移:依此向左移,右边补0
        在没有溢出的情况下,左移n位,相当于乘以2^n
       
    >>:右移:无符号数左边补0,符号数左边补符号位。
        右移n位,除以2^n,除不尽时丢弃余数。不能超过类型的宽度。否组会
        先对宽度取余,在移动取余结果的位数。
   
    -1:1111 1111
    0   0000 0000
    char(有符号):128(-128):1000 0000

两个数的运算:
    1、把小范围的数转化为大范围的数
    2、最小的计算单位是int
        char c = 'a';
        char d = 'b';
        sizeof(c + d) => 4;
   

原创粉丝点击