zoukankan      html  css  js  c++  java
  • C语言运算符和优先级

            关于C语言运算符和优先级,经整理众多博客资料汇入自己的实战,如下:
            a.算术运算
            C语言一共有34种运算符,包括常见的加减乘除运算。
            1) 加法:+ 还可以表示正号
            2) 减法:- 还可以表示负号
            3) 乘法:* 非数学意义上的X
            4) 除法:/  注意1/2的值为0而非0.5
            5) 取余(模运算):两个整数相除之后的余数(注意两边都必须是整数,带符号只和左值有关)
              注意点:
            1) Int a=10.8;//数据精度丢失警告。结果为10——自动类型转换
            2) Int a=(int)10.8;//无警告。把10.8强制转换为整型——强制类型转换
            3) Double c=10.6+6//结果为16.600000。在计算机中,拿两个数值进行运算,则运算符两边的数值需要类型相同,如果不同则进行自动类型提升。即把6转为6.000000后再参与运算。
            4) 参与运算的两个数是什么类型,那么其结果就是什么类型。
            int a=10/3结果为3,
            double b=10/3结果为3.000000;
            double c=10.0/3结果为3.333333。
            要求精确值可以进行强制类型转换。
            double d=(double)3/2;//把3转换为double类型变为3.000000,之后2进行自动类型提升转变为2.000000参与运算,结果为1.500000。
                                 //也可以写成3/(double)2。区别double e=(double)(3/2)先计算3/2的值为1再对1进行强制类型转换,结果为1.000000。
            b.赋值运算
            1)简单赋值
            Int a=10+5;a=b=10;//从右向左,左边不能为常量
            2)复合赋值
            a=a+5;=>a+=5;
            a=a*5;=>a*=5;
            a+=5*6+4;=>a=a+(5*6+4)
            提示:预算顺序取决于两点:一是运算符的优先级,二是结合的顺序。
     
            c.自增自减运算
            Int a=10;
            把a的值加1有四种方法:
            1) a=a+1;
            2) a+=1;
            3) a++;
            4) ++a;
            简单区分a++和++a。
            Int b;
            Int a=10;
            b=++a; //a==11,b==11;a先把值加1为11,再赋值给b
            b=a++; //a==11,b==10;a先把值10复制给b,a自己再加1为11
            b=(a++)+(++a);  //a1==10,a2==12,b==22
            b=(++a)+(a++);  //a1==11,a2==11,b==22
            注意:int d=10++;//这种写法是错误的,因为对常量进行自加和自减没有任何意义。

            d.Sizeof
            作用:用来计算变量,常量或者是一种数据类型所占的内存字节数。
            基本形式:sizeof(变量名|常量|数据类型),完成之后返回一个值。
            1) sizeof 变量|常量
            2) sizeof (变量|常量)
            3) sizeof (数据类型)
            注意:数据类型一定要用括号括起来,不能写成sizeof 数据类型这样的形式。

            e.关系运算符
            1)条件判断
            默认情况下。在程序中写出的每一句正确的代码都会被执行,但很多时候我们需要在某个条件成立的情形下才执行某一段代码,
            如登录操作,这种情况可以使用条件语句来完成。
            2)真假
            在C语言中,条件成立称为“真”,条件不成立称为“假”。
            C语言规定,任何数值都有真假性,任何非零值都为真,只有0才为假,无布尔类型。
            3)关系比较
            关系运算的结果只有两种情况,如果条件成立就为真,值为1,如果条件不成立就为假,值为0。
            有6种运算符,分别是:(1)<  (2)<=  (3) >  (4) >=  (5)==  (6)!=
            4)使用注意
            a) ==和!=优先级相等,其他四个关系运算符的优先级相等,且前者的优先级低于后者。如2==3>1 应该先计算3>1
            b) 关系运算符中,若优先级相同,则“从左往右”结合。如4>3<2,先计算4>3
            c) 关系运算符中的优先级小于算术运算符。如3+4>8-2 相当于(3+4)> (8-2)
            d) 练习5!=4+2*7>3==10 先计算5!=18>3==10,5!=1==10,1==10,假

            f.逻辑运算符
            逻辑运算的结果只有两个:真(0)和假(1)
            1) 与   &&   条件1&&条件2 只有的那个条件1和条件2都成立时,才为真否则为假。
            2) 或   ||    条件1 ||条件2  当条件1或条件2中有一个成立时就为真,都不成立时为假。
            3) 非   !  !条件   取反
            注意:逻辑运算符在进行运算时,只要能够确定整体的真假性,后面的条件就不再进行而是直接忽略。
            Int a=b=10;
            Int c=(a>5)&&(++b>=11);//此时a==10,b==11,c==1
            Int c=(a<5)&&(++b>=11);//此时a==10,b==10,c==0
            提示:在进行逻辑运算时,如果搞不清楚各个符号的优先级,可以使用()。

            g.三目运算符
            双目:需要两个值参与运算
            单目:1个数值参与运算  如!5
            三目:需要3个数值参与
            格式:条件?数值1:数值2
            先判断?前的条件,若条件成立则返回数值1,若条件不成立则返回条件2。
            要求比较a和b的值,把数值大的存入到c中  c=a>b?a:b
            比较a,b,c三个数的值,把最大的值存入到d中
            Int  abmax=(a>b)?a:b;
            d=abmax > c ? abmax : c;

            十五个优先级:
            1)   ()  []  .  ->
            2)   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof
            3)   * / %
            4)   + -
            5)   >> <<  
            6)   > >= < <=
            7)   == !=   
            8)   &  
            9)   ^   
            10)  |   
            11)  &&
            12)  ||
            13)  ?:
            14)   =  +=  -=  *=  /=   %=  |=   ^=   &=   >>=   <<=
            15)  ,
            ps:结合性:2   13  14  是从右至左,其他都是从左至右。

    wsksec@gmail.com Pressing on Toward the Goal
  • 相关阅读:
    各种图示的介绍及绘制(boxplot、stem)
    各种图示的介绍及绘制(boxplot、stem)
    Python Tricks(二十二)—— small tricks
    Python Tricks(二十二)—— small tricks
    matplotlib tricks(关闭坐标刻度、坐标轴不可见)
    matplotlib tricks(关闭坐标刻度、坐标轴不可见)
    图灵机(Turing Machine)
    基于TCP/IP的Matlab Modbus与M340 PLC通讯
    hdu1195 Open the Lock (DFS)
    Java菜鸟学习笔记--数组篇(二):数组实例&args实例
  • 原文地址:https://www.cnblogs.com/shuk-notes/p/4694155.html
Copyright © 2011-2022 走看看