数据类型与变量、表达式.ppt
注意:(1)自增运算符(++),自减运算符(--),只能用于变量,而不能用于常量或表达式,(2)++和--的结合方向是“自右至左”。自增(减)运算符常用于循环语句中使循环变量自动加1。也用于指针变量,使指针指向下一个地址例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4C语言中有的运算符为一个字符,有的运算符由两个字符组成,为避免误解,最好采取大家都能理解的写法。例如:不要写成i+++j的形式,而应写成(i++)+j的形式有关表达式使用中的问题说明12例1、以下选项中值为1的表达式是()(2006年9月全国计算机二级考试原题)
A、1-0?B、1-\0?C、1-0?D、\0-0例2、s(s-a)(s-b)(s-c)是合法的C语言表达式。例3、表达式3*5/2和表达式3/2*5等价。例4、在C语言中,表达式(010+2)的值是10。例6、以下不能正确表示代数式2ab/cd的C语言表达式的是()。(2008年9月全国计算机等考试原题)A、2*a*b/c/d B、a*b/c/d*2 C、a/c/d*b*2 D、2*a*b/c*dAD01赋值运算符02赋值符号“=”就是赋值运算符,它的作用是03将一个数据赋给一个变量。如“a=3”的作用04是执行一次赋值操作(或称赋值运算)。把常05量3赋给变量a。也可以将一个表达式的值赋06给一个变量.3、赋值运算符和赋值表达式类型转换如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。将浮点型数据(包括单、双精度)赋给整型变量时,舍弃浮点数的小数部分。如:i为整型变量,执行“i=3.56”的结果是使i的值为3,以整数形式存储在整型变量中.将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中如:将23赋给float变量f,即执行f=23,先将23转换成23.00000,再存储在f中。将23赋给double型变量d,即执行d=23,系统将23补足有效位数字为23.00000000000000,然后以双精度浮点数形式存储到变量d中。将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量的存储单元(4个字节)中。但应注意数值范围不能溢出。如:floatf;doubled=123.456789e100;f=d;就出现溢出的错误。如果将一个float型数据赋给double变量时,数值不变,有效位数扩展到16位,在内存中以8个字节存储字符型数据赋给整型变量时,由于字符只占1个字节,而整型变量为2个字节,因此将字符数据(8个二进位)放到整型变量存储单元的低8位中。01020304若所用系统将字符处理为无符号字符类型,或程序已将字符变量定义为unsignedchar型,则将字符的8位放到整型变量低8位,高8位补零。例如:将字符‘\376’赋给int型变量i第一种情况:低位对应、高位补零若所用系统(如TurboC++)将字符处理为带符号(signedchar)时,若字符最高位为0,则整型变量高8位补0;若字符最高位为1,则高8位全补1。这称为“符号扩展”,这样做的目的是使数值保持不变,如变量c(字符‘\376’)以整数形式输出为-2,i的值也是-2。第二种情况:符号扩展赋值情况:出c,将得到字符“!”c的值为33,量时,只将其低8位原封不动地送到char型变量(即!的ASCII码为33。如果用“%c”输将一个int、short、long型数据赋给一个char型变截断)。例如:inti=289;charc=′a′;c=i;将带符号的整型数据(int型)赋给long型变量时,要进行符号扩展,将整型数的16位送到long型低16位中:如果int型数据为正值(符号位为0),则long型变量的高16位补0;如果int型变量为负值(符号位为1),则long型变量的高16位补1,以保持数值不改变。反之,若将一个long型数据赋给一个int型变量,只将long型数据中低16位原封不动地送到整型变量(即截断)。如果b=65536(八进制数0200