06
类型的自动转换和强制转换
当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。转换优先级为:char < int < float < double 即左边级别“低“的类型向右边转换。
具体地说,若在表达式中优先级最高的数据是double型,则此表达式中的其他数据均被转换成double型,且计算结果也是double型;若在表达式中优先级最高的数据是float型,则此表达式中的其他数据均被转换成float型,且计算结果也是float型。
在做赋值运算时,若赋值号左右两边的类型不同,则赋值号右边的类型向左边的类型转换;当右边的类型高于左边的类型时,则在转换时对右边的数据进行截取。
除自动转换外,还有强制转换,表示形式是:( 类型 )(表达式);
例:(int)(a b)
讨论:当a值赋值为3.4,b值赋值为2.7,(int)(a b)和(int)a b的值分别为多少?
07
C运算符认识
C语言的运算符范围很广,可分为以下几类:
1、算术运算符:用于各类数值运算。包括加( )、减(-)、乘(*)、除(/)、求余(%)、自增( )、自减(--)共七种。
2、赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值( =,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。<="" span="">
3、逗号运算符:用于把若干表达式组合成一个表达式(,)。
4、关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、>=)、小于等于(<=)和不等于(!=)六种。<="" span="">
5、逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
6、条件运算符:这是一个三目运算符,用于条件求值(?:)。
7、位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
8、指针运算符:用于取内容(*)和取地址(&)二种运算。
9、求字节数运算符:用于计算数据类型所占的字节数(sizeof)。
10、特殊运算符:有括号(),下标[],成员(→,.)等几种。
另外,按参与运算的对象个数,C语言运算符可分为:单目运算符 (如 !)、双目运算符 (如 ,- )和三目运算符 (如 ? :)。
08
算术运算符和算术表达式
8.1 基本的算数运算符
—
(1) (加法运算符或正值运算符,如2 5)。
(2)-(减法运算符或负值运算符,如4-2)。
(3)*(乘法运算符,如3*8)。
(4)/(除法运算符,如11/5)。
/的运算分为两种情况:
a、“除”的左右两边都为整数时,所得结果必然是整数(注意:仅取整数部分,不是四舍五入)比如:5/2的值为2,不是2.5,1/2的值为0。
b、“除”的左右两边至少有一个是实型数据(即小数)时,所得结果为实型数据。比如:5/2.0的值为2.5,7.0/2.0的值为3.5.
(5)%(模运算符或称求余运算符,%两侧均应为整型数据,如9%7的值为2)。
需要说明的是:当运算对象为负数时,所得结果随编译器不同而不同,在vc中,结果的符号与被除数相同,比如:13%-2值为1,而-15%2值为-1。
8.2 算术表达式和运算符的优先级与结合性
—
算术表达式是用算术运算符和括号将运算量(也称操作数)连接起来的、符合C语言语法规则的表达式。运算对象包括函数、常量和变量等。
在计算机语言中,算术表达式的求值规律与数学中的四则运算的规律类似,其运算规则和要求如下。
(1)在算术表达式中,可使用多层圆括号,但括号必须配对。运算时从内层圆括号开始,由内向外依次计算各表达式的值。
(2)在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符的优先级相同,则按运算符的结合方向进行运算。
(3)如果一个运算符两侧的操作数类型不同,则先利用自动转换或强制类型转换,使两者具有相同类型,然后进行运算。
8.3 自增自减运算符
—
作用:使变量的值增1或减1。
如: i,--i (在使用i之前,先使i的值加1、减1)。i ,i-- (在使用i之后,使i的值加1、减1)。
(1)只有变量才能用自增运算符 ( )和自减运算符(--),而常量或表达式不能用,如10 或(x y) 都是不合法的。
(2) 和--的结合方向是“自右向左“,如 -i ,i的左边是负号运算符,右边是自增运算符,负号运算和自增运算都是 “自右向左“结合的,相当于 -(i )。
在循环语句中常用到自增(减)运算符,在指针中也常用到该运算符,考生要弄清楚“i ”和“ i”及“i--”和“--i”的区别,特别弄清楚表达式的值和变量的值。
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。