基本数据类型与表达式和运算符.ppt
赋值运算,如果赋值号“=”两边的数据类型不同,赋值号右边的类型转换为左边的类型。这种转换是截断型的转换,不会四舍五入。PARTONE强制转换强制转换是通过类型转换运算来实现。一般形式:(类型说明符)表达式功能:把表达式的结果强制转换为类型说明符所表示的类型。例如:(int)a将a的结果强制转换为整型量。(int)(x+y)将x+y的结果强制转换为整型量。(float)a+b将a的内容强制转换为浮点数,再与b相加。main(){floatf=5.75;printf((int)f=%d\n,(int)f);printf(f=%f\n,f);/*输出f的值*/}写出运行结果求下列算术表达式的值a=2,b=3,x=3.5,y=2.5(float)(a+b)/2+(int)x%(int)y02x=2.5,a=7,y=4.7x+a%3*(int)(x+y)%2/40155运算符狭义的运算符是表示各种运算的符号。C语言运算符丰富,范围很宽,把除了控制语句和输入/输出以外的几乎所有的基本操作都作为运算符处理,所以C语言运算符可以看作是操作符。C的运算符有以下几类:/(除法运算符)两个整数相除的结果为整数,如5/3的结果为1,舍去小数部分。但是如果除数或被除数中有一个为负值,则舍入的方向是不固定的,多数机器采用“向0取整”的方法(实际上就是舍去小数部分,注意:不是四舍五入)。思考:-8%5;8%-5如果参加+,-,*,/运算的两个数有一个为实数,则结果为double型,因为所有实数都按double型进行计算。求余运算符%,要求两个操作数均为整型,结果为两数相除所得的余数。求余也称为求模。一般情况,余数的符号与被除数符号相同。特别说明=赋值运算符赋值运算符左边必须是变量,右边可以是常量、变量、函数调用或常量、变量、函数调用组成的表达式。赋值符号“=”不同于数学的等号,它没有相等的含义。赋值运算时,当赋值运算符两边数据类型不同时,将由系统自动进行类型转换。转换原则是:先将赋值号右边表达式类型转换为左边变量的类型,然后赋值。转换规则将整型数据赋给单、双精度实型变量,数值不变,但以浮点数形式存储到变量中。将double型数据赋给float型变量时,截取其前面7位有效数字,存放到float变量的存储单元中(32bits)。但应注意数值范围不能溢出。将float型数据赋给double型变量时,数值不变,有效位数扩展到16位(64bits)。将实型数据(单、双精度)赋给整型变量,舍弃实数的小数部分。转换规则字符型数据赋给整型变量时,由于字符只占一个字节,而整型变量为2个字节,因此将字符数据(8bits)放到整型变量低8位中。有两种情况:如果所使用的系统将字符处理为无符号的量或对unsignedchar型变量赋值,则将字符的8位放到整型变量的低8位,高8位补0。如果所使用的系统将字符处理为带符号的量(如TurboC),若字符最高位为0,则整型变量高8位补0;若字符最高位为1,则整型变量高8位全补1。这称为符号扩展,这样做的目的是使数值保持不变。总之:不同类型的整型数据间的赋值归根到底就是:按照存储单元的存储形式直接传送。(由长型整数赋值给短型整数,截断直接传送;由短型整数赋值给长型整数,低位直接传送,高位根据低位整数的符号进行符号扩展)。复合赋值运算符在赋值符“=”之前加上某些运算符,可以构成复合赋值运算符,复合赋值运算符可以构成赋值表达式。C语言中许多双目运算符可以与赋值运算符一起构成复合运算符,即:+=,-=,*=,/=,%=,=,=,=,|=,^=注意:赋值运算符、复合赋值运算符的优先级比算术运算符低。a+=a-=a*aa+=a-=(a*a)a+=(a-=(a*a))a+=(a=a-(a*a))a+=(a=a-a*a)a=a+(a=a-a*a)a=-264a=12基本数据类型
运算符与表达式C语言的数据类型C++中还引入了一个新的数据类型:布尔型bool常用数据类型的取值范围类型标识符类型说明长度?(字节)范围备注char字符型1-128~127unsignedchar无符号字符型10~255shortint短整型2-32768~32767unsignedshortint无符号短整型20~65535int整型4-2147483648~2147483647unsignedint无符号整型40~4294967295lon