C语言基础--运算符与表达式

运算符与表达式

以下只是个人学习的笔记,由于我也是刚接触,所以有可能有错误,如有错误,请指出

1.表达式

      表达式: 由操作符和操作数组成,根据表达式所含操作数的个数可以分为简单表达式和复杂表达式

      简单表达式:只含有一个操作符的表达式

      复杂表达式:含有两个或多个操作符的表达式

      表达式本身什么也不做,只是返回结果值,在程序中不对返回的结果值进行任何的操作时,返回的结果值不起任何操作,也就是忽略返回值

      表达式产生作用的两种情况:  放在赋值语句的右侧  放在函数的参数中

      表达式的返回值是有类型的表达式的类型取决于组成表达式的变量和常量的类型

 

2.赋值运算符与赋值表达式

      赋值运算符:就是将一个数据赋给一个变量

(1).变量赋初值    

      变量赋初值:将一个常数或者一个表达式的结果赋给变量,变量中保存的就是这个常量或者赋值语句中的表达式的值 例 int iFirst=100;  char cChar='a';

(2).自动类型转换    

      让数据的值进行自动转换,如果把比较短的类型变量的值转换为必将长的数值类型时,数据信息不回丢失,但是,如果把比较长的类型变量的值转换为比较短的数值类型时,那么数据就会降低级别显示,并且当数据大小超过比较短的数值类型的可表示范围时,就会发生数据截断,有些编译器会发出警告信息

(3).强制类型转换

      如果数据类型不同,使用强制类型转换不会出现警告,但是如果高的级别向低的级别转换,可能会出现数据丢失   例 float fFloat=12.34f     int iInt=(int)fFloat

 

3.算术运算符与算术表达式

(1).算数运算符  

      包括两个单目运算符(正和负),5个双目运算符(加、减、乘、除和取模)

      正:+  负:-  乘:*  除:/

      取模:% 加:+  减:-

      取模运算符“%用于计算两个整数相处的到的余数”也就是取余

      双目运算符:要求有两个或多个操作数   单目运算符:要求有一个操作数

(2).算术表达式

      表达式中使用算术运算符,就是算术表达式

(3).优先级与结合性

      优先级:在表达式求值时,按照运算度的优先级别高低次序执行,算术运算符中的*、/、%的优先级别高于+、-的级别   结合性:当优先级相同的时候,结合方向为“自左向右”

(4).自增/自减运算符

      在C语言中,还有两个特殊的运算符,即自增运算符“++”,自减运算符“--”,自增运算符与自减运算符对变量的操作分别为增减1和减少1

      在这里的“++”和“--”可以放在变量的前面,也可以放在变量的后面,但是代表意义将不同,放在前面的名为前缀,例 ++i,是先进行加一操作,在进行赋值,放在后面的名为后缀,例 i++,是先赋值,在进行加1操作,“--同理”

 

4.关系运算符与关系表达式

(1).关系运算符

        包括大于、大于等于、小于、小于等于、等于和不等于

       大于:>  大于等于:>=  小于:<  小于等于:<= 等于:==   不等于:!=  注:这里的等于“==”和赋值“=”的代表意义不同

(2).关系表达式    

      关系运算符用于对两个表达式的值进行比较,返回一个真值或者假值。返回真值还是假值取决于表达式中的值和所用的运算符。其中真值为1,假值为0,真值表示制定的关系成立,假值则表示指定的关系不正确

      关系运算符常用来构造条件表达式,用在程序流程控制语句中,如if语句是用于判断条件而执行语句块,在其中使用关系表达式作为判断条件,如果关系表达式返回的值真值则执行下面的语句块,如果是假值就不去执行

(3).优先级与结合性

关系运算符的结合性都是自左向右的使用关系运算符时常常会判断两个表达式的关系,但是由于运算符存在着优先级的问题,因此如果不小心处理则会出现错误。如果要进行这样的判断操作,先对一个变量进行赋值,然后判断这个赋值的变量是否不等于一个常数

 

5.逻辑运算符与逻辑表达式

(1).逻辑运算符

      逻辑运算符有双目逻辑与单目逻辑,双目逻辑有逻辑与(&&)、逻辑或(||),单目逻辑有逻辑非(!)

      逻辑与:&&,例,a=b&&c;a要满足b同时满足c,也就是说,逻辑与必须两者全都满足  

      逻辑或:||,例,a=b||c;a满足b或者c就可以,也就是说,逻辑或只需要满足一个就行  逻辑非:!,例,a=!b

 

(2).逻辑运算符短路

  逻辑运算符&&

  逻辑运算符&&,如果&&左边的为假,整个表达式为假,后面的将不执行

  逻辑运算符||

  逻辑运算符||,如果||左边的为真,整个表达式为真,后面的将不执行

(3).逻辑表达式

      可以将多个关系表达式的结果合并在一起进行判断

      逻辑与运算符和逻辑或运算符可以用于相当复杂的表达式中。一般来说,这些运算符用来构造条件表达式,用在控制程序的流程语句中,例如if、for、while语句等

(4).优先级与结合性

      “&&”和“||”是双目运算符,他们要求有两个操作数,结合方向自左向右,“!”是单目运算符,要求有一个操作数,结合方向自左向右

      逻辑运算符的优先级从高到底依次为单目逻辑非运算符“!”、逻辑与运算符“&&”和逻辑或运算符“||”

 

6.位逻辑运算符与为逻辑表达式

(1).位逻辑运算符

      为逻辑运算符包括位逻辑与(&)、位逻辑或(|)、位逻辑非(^)、取补(~)

      双目运算符有包括位逻辑与(&)、位逻辑或(|)、位逻辑非(^),单目运算符有取反(~),这些运算符只能用于整型表达式。为逻辑运算符通常用于对整型变量进项位的设置、清零和取反,以及对某些选定的位进行检测

(2).位逻辑表达式

      在程序中,位逻辑运算符一般被程序员用作开关标志。较低层次的硬件设备驱动,经常需要对输入/输出设备进行位操作

 

7.逗号运算符与逗号表达式

      C语言中,可以用逗号将多个表达式分割开来,其中,用逗号分割的表达式被分别计算,并且整个表达式的值是最后一个表达式的值

      逗号表达式也可称为顺序糗事运算符,逗号表达式的一般形式如下:  表达式1,表达式2,……表达式n

      逗号表达式的求解过程是:先求解表达式1,再求解表达式2,一直求解到表达式n。整个逗号表达式的值是表达式n的值。

     例a=2+1,3+12,45+21,56+2;  在这里求解出来a的值为3,因为“=”的优先级大于“,”的优先级

     例a=(2+1,3+12,45+21,56+2);  在这里求解出来a的值为58

8.复合赋值运算符

      是一种缩写形式,可使得变量操作的描述方式更为简洁  例a=a+b可以写成a+=b

      这种描述更为简洁,关于上面两种实现相同操作的语句,赋值运算符和复合运算符的区别在于:   为了简化程序,是程序精炼;   为了提高编译效率。

 

 

posted @ 2015-06-17 23:21  lfxiaoweinice  阅读(404)  评论(0编辑  收藏  举报