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  是从右至左,其他都是从左至右。

时间: 2024-10-13 10:41:49

C语言运算符和优先级的相关文章

说说C语言运算符的“优先级”与“结合性”

论坛和博客上常常看到关于C语言中运算符的迷惑,甚至是错误的解读.这样的迷惑或解读大都发生在表达式中存在着较为复杂的副作用时.但从本质上看,仍然是概念理解上的偏差.本文试图通过对三个典型表达式的分析,集中说说运算符的优先级.结合性方面的问题,同时说明它们跟求值过程之间存在的区别与联系. 优先级决定表达式中各种不同的运算符起作用的优先次序,而结合性则在相邻的运算符的具有同等优先级时,决定表达式的结合方向. (一)a = b = c;关于优先级与结合性的经典示例之一就是上面这个"连续赋值"表

C语言运算符及其优先级汇总表口诀

C语言运算符及其优先级汇总表口诀     圆下箭头一顿号     非凡增减富强针地长     三乘除,四加减,五移位     千万别把鱼忘记,它在盛饭的厨子里     小灯大灯灯灯不等     爸喂鱼,舅疑惑,裸鸡也疑惑     十三姨,十四父,十五逗,兜到低     “圆下箭头一顿号”指的是第15级的运算符.其中圆指的是运算符(),下指的是下标运算符[],箭头指的是指向结构体成员运算符->,顿号指的是结构体成员运算符.     “非凡增减富强针地长”指的是第14级的运算符.其中非指的是逻辑运算

[c语言]运算符的优先级与结合性

c语言中运算符的优先级和结合性常常被人混淆一谈,本文目的在于简单谈谈两者的区别.本文举几个简单的例子说明,这些运算符也特别常用. 首先要明白的是:优先级决定表达式中各种不同的运算符起作用的优先次序:而结合性则在相邻的运算符的具有同等优先级时,决定表达式的结合方向. [赋值运算符“=”] 对于赋值运算符来说,常会用到的是连续赋值的表达式.比如“a=b=c”. 这里的变量b的两边都是赋值运算,优先级当然是相同的,那么应该怎么理解这个表达式呢?我们知道,赋值表达式具有“向右结合”的特性,这就表示这个表

C语言运算符及优先级详解表格

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [ ] 数组下标 数组名[常量表达式] 左到右 圆括号 (表达式)/函数名(形参表) 成员选择(对象) 对象.成员名 成员选择(指针) 对象指针->成员名 2 + 正号运算符 +表达式 右到左 单目运算符 负号运算符 -表达式 自增运算符 ++变量名/变量名++ 自减运算符 --变量名/变量名-- 取值运算符 *指针变量 取地址运算符 &变量名 逻辑非运算符 !表达式 按位取反运算符 ~表达式 长度运算符 sizeof(表达式) 3

C语言运算符优先级及结合性

今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () [] -> . 自左向右 ! ~ ++ -- - (type) * & sizeof 自右向左 * / % 自左向右 + - 自左向右 << >> 自左向右 < <= > >= 自左向右 == != 自左向右 & 自左向右 ^ 自左向右

C 语言运算符

注:该内容整理自以下链接. http://blog.csdn.net/huangblog/article/details/8271791 C语言运算符及优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++

C语言运算符简介

举个例子:     1+2*3-10 '1', '2', '3', '10'称为操作数,'+', '*', '-'称为运算符. 上面的表达式先进行 * 运算,再进行 + 运算和 - 运算,这是因为运算符的优先级不同,* 的优先级高于 + 和 -,所以先进行 * 运算. 进行 - 运算时,是7减10,而不是10减7,这是由运算符的结合性决定的,- 运算符的结合性是从左到右. 运算符不仅具有不同的优先级,还有不同的结合性.在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运

C 语言运算符优先级

每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖! C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 +

C语言运算符优先级

C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 ++变量名/变量名++ -- 自减运算符 --变量名/变量名-- * 取值运算符 *指针变量 & 取地址运算符 &