版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3 3章章 数据类型、运算符与表数据类型、运算符与表达式达式第第3 3章章 数据类型、运算符与表达式数据类型、运算符与表达式 计算机中数的表示计算机中数的表示 C C语言的基本数据类型语言的基本数据类型 常量和变量常量和变量 数据类型转换数据类型转换 运算符与表达式运算符与表达式3.0 3.0 计算机中数的表示方法计算机中数的表示方法1.1.十进制:十进制:0 0 9 9十个数字组成,逢十进一十个数字组成,逢十进一2.2.二二进制:进制:0 0 1 1二个数字组成,逢二进一二个数字组成,逢二进一3.3.八进制:八进制:0 0 7 7八个数字组成,逢八进一八个数字组成,逢八进一4.4.十六进
2、制:十六进制:0 0 9 9、A AF F十六个数字组成,逢十六进一十六个数字组成,逢十六进一计算机中数的表示及进制转换计算机中数的表示及进制转换数码、基与权数码、基与权 - -数码:表示数的符号数码:表示数的符号 - -基:数码的个数基:数码的个数 - -权:每一位所具有的值权:每一位所具有的值数制数制3.0 计算机中数的表示方法计算机中数的表示方法 十进制十进制 二进制二进制 八进制八进制 十六进制数十六进制数 0 0 0 0 1 1 1 1 2 10 2 22 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 1
3、0 88 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F=1 24 0 23 1 22 0 21 1 20 1 2-1 1 2-2=16 + 0 + 4 + 0 + 1 + 0.5 + 0.25=(21.75)10(10101.11)2(351)8=3 82 5 81 1 80=192 + 40 + 1=(233)10(121)16=1 162 2 161 1 160=256 + 32 + 1=(289)10各种进制之间的转换各种进制之间的转换
4、u二进制、八进制、十六进制转换成十进制二进制、八进制、十六进制转换成十进制- -方法:按权相加方法:按权相加各种进制之间的转换各种进制之间的转换( (整数整数) )l二进制、八进制、十六进制转换成十进制二进制、八进制、十六进制转换成十进制 方法:按权相加方法:按权相加l十进制转换成二进制、八进制、十六进制十进制转换成二进制、八进制、十六进制 方法:连续除以基,从低到高记录余数,直至商为方法:连续除以基,从低到高记录余数,直至商为0 0例例 把十进制数把十进制数5959转换成二进制数转换成二进制数59592 229292 214142 27 72 23 32 21 12 20 0(59)(59)
5、1010=(111011)=(111011)2 21 11 10 01 11 11 11 1 1 0 1 11 1 1 0 1 1余余余余余余余余余余余余例例 把十进制数把十进制数159159转换成八进制数转换成八进制数1591598 819198 82 28 80 0(159)(159)1010=(237)=(237)8 82 3 7 2 3 7 余余 7 7余余 3 3余余 2 2例例 把十进制数把十进制数459459转换成十六进制数转换成十六进制数4594591616282816161 116160 0(459)(459)1010=(1CB)=(1CB)16161 C B 1 C B 余
6、余1111余余1212余余 1 1二进制与八进制之间的转换二进制与八进制之间的转换l二进制转换成八进制:从右向左,每二进制转换成八进制:从右向左,每3 3位一组位一组(不足(不足3 3位左补位左补0 0),转换成八进制),转换成八进制l八进制转换成二进制:用八进制转换成二进制:用3 3位二进制数代替每一位二进制数代替每一位八进制数位八进制数例例 (1101001)(1101001)2 2=(=(00001,101,001)1,101,001)2 2=(151)=(151)8 8例例 (246)(246)8 8=(=(0 010,100,110)10,100,110)2 2=(10100110)
7、=(10100110)2 2000 0001 1010 2011 3100 4101 5110 6111 7二进制与十六进制之间的转换二进制与十六进制之间的转换l二进制转换成十六进制:从右向左,每二进制转换成十六进制:从右向左,每4 4位位一组(不足一组(不足4 4位左补位左补0 0),转换成十六进制),转换成十六进制l十六进制转换成二进制:用十六进制转换成二进制:用4 4位二进制数代位二进制数代替每一位十六进制数替每一位十六进制数0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101
8、 D1110 E1111 F例例 (11010101111101)2=(11010101111101)2=(000011,0101,0111,1101)2=(357D)1611,0101,0111,1101)2=(357D)16例例 (4B9E)16=(4B9E)16=(0 0100,1011,1001,1110)2=(100101110011110)2100,1011,1001,1110)2=(100101110011110)2bit和和Bytebit 数位 用b表示Byte 字节 用B表示1 Byte = 8 bit11011001110001011bit1 Byte数值的表示方法数值的表
9、示方法原码、反码和补码原码、反码和补码原码:原码: 最高位为符号位,其余各位为数值本最高位为符号位,其余各位为数值本 身的绝对值身的绝对值反码:反码: 正数:反码与原码相同正数:反码与原码相同 负数:符号位为负数:符号位为1 1,其余位对原码取反,其余位对原码取反补码:补码: 正数:原码、反码、补码相同正数:原码、反码、补码相同 负数:最高位为负数:最高位为1 1,其余位为原码取反,其余位为原码取反, 再对整个数加再对整个数加1 1原码原码反码反码补码补码 +7000001110000011100000111 -7100001111111100011111001 +00000000000000
10、00000000000 -0100000001111111100000000数的范围数的范围0111111111111111(-127+127)0111111110000000(-127+127)0111111110000000(-128+127)(用一字节表示数)(用一字节表示数)负数补码转换成十进制数:最高位不动,其余位取反十进负数补码转换成十进制数:最高位不动,其余位取反十进制再减制再减1 1例例 补码:补码:1111100111111001 取反:取反:10000110=-610000110=-6 值再减值再减1 1:-6-1=-7-6-1=-73.13.1C C语言的数据类型语言的数
11、据类型C C数数据据类类型型基本类型基本类型派生类型派生类型指针类型指针类型字符型字符型charchar整型整型实型实型单精度型单精度型floatfloat双精度型双精度型doubledouble数组数组结构体结构体structstruct共用体共用体unionunion短整型短整型shortshort长整型长整型longlong布尔型布尔型 boolbool枚举类型枚举类型enumenum空类型空类型voidvoid双长整型双长整型long long longlong基本整型基本整型 intint函数类型函数类型复数浮点型复数浮点型数据类型决定:数据类型决定:1. 1. 数据占内存字节数数据
12、占内存字节数2. 2. 数据取值范围数据取值范围3. 3. 其上可进行的操作其上可进行的操作基本数据类型基本数据类型类型类型 符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整型整型字符型字符型实型实型有有无无(signed)int16-32768 32767(signed)short16-32768 32767(signed)long32-2147483648 214748364716unsigned int0 65535320 4294967295unsigned longunsigned short160 65535有有float32-3.4e38 3.4e38有有doubl
13、e64-1.7e308 1.7e308有有char8-128 127无无unsigned char80 255有有long double128-1.2e4932 1.2e4932VC6.0 VC6.0 基本数据类型基本数据类型如如 #define PRICE 30常量常量定义:程序运行时其值不能改变的量(即常数)定义:程序运行时其值不能改变的量(即常数)分类分类: :符号常量符号常量: :用标识符代表常量用标识符代表常量定义格式:定义格式: #define #define 符号常量符号常量 常量常量#define PRICE 30main() int num,total; num=10; to
14、tal=num * PRICE; printf(total=%d,total);运行结果:运行结果:total=3003.2 3.2 常量和变量常量和变量变量变量概念:其值可以改变的量概念:其值可以改变的量变量名变量名与与变量值变量值变量定义的一般格式:变量定义的一般格式: 数据类型数据类型 变量变量11,变量,变量2 2,变量,变量n;n;决定分配字节数和数的表示范围合法标识符例例:int a,b,c;float data; 标识符就是一个名字,用来标识变量名、标识符就是一个名字,用来标识变量名、符号常量名、函数名、数组名、类型名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。文
15、件名的有效字符序列。 组成:由组成:由字母、数字字母、数字和和下划线下划线三种字符组三种字符组成,且成,且第一个字符第一个字符必须为字母或下划线。必须为字母或下划线。合法标识符举例合法标识符举例sum, class, sum, class, li_leili_lei, , _total, _31day _total, _31day不合法标识符举例不合法标识符举例Dr.LiDr.Li, #123, 5D2, #123, 5D2,ab, $10 ab, $10 注:标识符区分大小写;变量名一般用小写字母注:标识符区分大小写;变量名一般用小写字母表示;应做到表示;应做到“见名知义见名知义”。数据类型
16、数据类型 变量变量11,变量,变量2 2,变量,变量n;n;int a=1, b-3, c;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1; 变量初始化变量初始化: :定义时赋初值定义时赋初值 变量定义的一般格式:变量定义的一般格式:编译程序根据变量定义为其编译程序根据变量定义为其分配指定字节的内存单元分配指定字节的内存单元.地址地址a ab bc c2 2字节字节2 2字节字节2 2字节字节地址地址地址地址.内存内存1 1-3-3随机数随机数变量的使用:变量的使用:先定义,后使用先定义,后使用变量定义位置:一般放在函数开头变量定义位
17、置:一般放在函数开头例1 int student; stadent=19; /*Undefined symbol stadent in function main */例2 float a,b,c; c=a%b; /*Ilegal use of floating point in function main */main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);变量定义可执行语句常变量常变量常变量定义的一般格式:常变量定义的一般格式: const const 数据类型数据类型 变量变量= =常量
18、常量; ;const float pi = 3.1415926const float pi = 3.1415926; /定义常变量定义常变量 #define PI 3.1415926 #define PI 3.1415926 / /定义符号常量定义符号常量 3.3 3.3 整型数据整型数据&整型常量(整常数)整型常量(整常数)三种形式:三种形式:十进制整数:由数字十进制整数:由数字0909和正负号表示和正负号表示. .如如 12,-345,012,-345,0八进制整数:由数字八进制整数:由数字0 0开头开头, ,后跟数字后跟数字0707表示表示. .如如0123,0110123,011十六进
19、制整数:由十六进制整数:由0 x0 x开头开头, ,后跟后跟09,af,AF09,af,AF表示表示. . 如如0 x123,0Xff0 x123,0Xff整型常量的类型整型常量的类型在常量后面加字母在常量后面加字母u u或或U U,认为其是,认为其是unsingedunsinged intint型型在在整常量后加字母整常量后加字母l l或或L L,认为它是认为它是long long intint 型常量型常量3.3 3.3 整型数据整型数据&整型变量整型变量整型数据在内存中存放形式:整型数据在内存中存放形式:实际上,在计算机中数值是以实际上,在计算机中数值是以补码补码表示的。一个表示的。一个
20、正正数的补码数的补码和其原码相同,和其原码相同,负数的补码负数的补码为其绝对值的二为其绝对值的二进制形式进制形式按位取反再加按位取反再加1 1。i 10 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0j -10 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0&整型变量整型变量 整型变量的定义整型变量的定义main() int a,b,c,d; unsigned int u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn”,c,d);运行结果:运行结果:a+ua+u=22=22,b+ub+u=-14=-1
21、43.3 3.3 整型数据整型数据main() int a,b; a = 32767; b = a + 1; printf(%d,%d,a,b);运行结果:运行结果:32767,32768 整型数据的溢出整型数据的溢出符号位符号位 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 132767符号位符号位 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-32768改过:改过:main() long int a,b; a = 32767; b = a + 1; printf( %ld,%ld,a,b);&实型常量(实数或浮点数)实型常量(实数或浮点数)表示形式:表示形式
22、:十进制小数形式:(必须有小数点)十进制小数形式:(必须有小数点) 如如0.123, .123, 123.0, 0.0, 123.0.123, .123, 123.0, 0.0, 123.指数形式:(指数形式:(e e或或E E之前必须有数字;指之前必须有数字;指数必须为整数)如数必须为整数)如12.312.3e3 ,123E2, e3 ,123E2, 1.23e4, 1.23e4, e-5, 1.2E-3.5e-5, 1.2E-3.5 实型常量的类型实型常量的类型默认默认doubledouble型型在在实型常量后加字母实型常量后加字母f f或或F F,认为是认为是float float 型型
23、3.4 3.4 实型数据实型数据&实型变量实型变量实型数据在内存中存放形式:实型数据在内存中存放形式:按指数形式存在,占按指数形式存在,占4 4个字节个字节 如:如:float x;float x;x=3.14159;x=3.14159;x .314159+1数符数符 小数部分小数部分 指数指数 + .314159 10 3.141591+3.4 3.4 实型数据实型数据3.4 3.4 实型数据实型数据实型变量的分类:实型变量的分类:类类型型符符号号关键字关键字数的表示范围数的表示范围所占位数所占位数实型实型有有float32-3.4e383.4e38有有double64-1.7e3081.7
24、e308有有long double128-1.2e49321.2e4932实型变量的分类:实型变量的分类:3.4 3.4 实型数据实型数据实型数据的舍入误差:实型数据的舍入误差:main( ) float a , b ; a=123456.789e5 ; b= a+20 ; printf(a=%f , b=%fn , a , b ) ; 运行结果:运行结果:a=12345678848.000000 , b= 12345678848.0000003.4 3.4 实型数据实型数据实型数据的舍入误差:实型数据的舍入误差:main( ) float a , b ; a=1234.56789e5 ; b
25、= a+20 ; printf(a=%f , b=%fn , a , b ) ; 运行结果:运行结果:a=123456792.000000 , b= 123456816.00000032&字符常量字符常量定义定义: :用用单引号单引号括起来的括起来的单个普通字符单个普通字符或或转义字符转义字符. . 3.5 3.5 字符数据字符数据如 a A ? n101转义字符转义字符: :反斜线后面跟一个字符或一个反斜线后面跟一个字符或一个代码值表示,将代码值表示,将后面的字符转换成后面的字符转换成另外的意义。另外的意义。常用转义字符及其含义:常用转义字符及其含义: 转义字符转义字符含义含义nnrr dd
26、ddddttbbff “ xhhxhh转义字符转义字符含义含义换行换行回车回车单引号单引号1313位位8 8进制数进制数代表的字符代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号1212位位1616进制数进制数代表的字符代表的字符例例 main() printf(“Yb=n”); 运行结果:运行结果:屏幕显示:屏幕显示:= =打印机输出:打印机输出: 例例 3.5 3.5 转义字符的使用。转义字符的使用。main( )main( ) printf(printf(ababc cttdederrf fttg gnn) ;) ; printf(hprintf(htti ibbbbj
27、 jk k) ) ; ; 1 2 3 45 6 7 8 9 10 11a bcdehigfjk打印结果:打印结果: fabcgde hjik运行运行结果:结果: f ge hjk字符常量的字符常量的值值:该字符的:该字符的ASCIIASCII码码值值如如 A A6565, a a9797, 0 04848, nn1010如如 101 -A 012 -n 376 - x61 -a 60 -0 483 -( )例例:A-101-x41-65例例 转义字符举例转义字符举例main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C
28、Programn); printf(Turbo C);运行结果运行结果:A B CI say:“How are you?”C ProgramTurbo C字符的字符的值域值域(取值范围):(取值范围):ASCIIASCII字符表中的所有字符,每个字符表中的所有字符,每个字符型数据在内存中占字符型数据在内存中占一个字节一个字节,包括,包括可显示字符和可显示字符和非可显示字符非可显示字符。&字符变量字符变量定义:用来存放字符常量,只能放定义:用来存放字符常量,只能放一个一个字符。字符。存储:字符以存储:字符以ASCIIASCII码码存储存储 如:如:char c1,c2;char c1,c2; c
29、1=a;c2=b; c1=a;c2=b;3.5 3.5 字符数据字符数据c1 97 0110 0001 c2 98 0110 0010 3.5 3.5 字符数据字符数据&字符变量字符变量字符数据字符数据与与整型数据整型数据之间可以之间可以通用通用(ASCIIASCII码)。码)。main() char c1 , c2 ; c1=97 ; c2=98 ; printf(“c1=%c , c2=%cn” , c1,c2 ) ; printf(“c1=%d , c2=%dn” , c1,c2 ) ;运行结果:运行结果:例:例:main() char c1 , c2 ; c1=a ; c2=b ; c
30、1=c1-32 ; c2=c2-32; printf(“c1=%c , c2=%cn” , c1,c2 ) ; printf(“c1=%d , c2=%dn” , c1,c2 ) ;运行结果:运行结果:3.5 3.5 字符数据字符数据&字符串常量字符串常量定义:用定义:用双引号双引号(“”)(“”)括起来的字符序列括起来的字符序列3.5 3.5 字符数据字符数据“How are you?”, “china”,“123#45”, “a”c h i n a 字符常量与字符串常量不同字符常量与字符串常量不同a a 0例例 a a“a a”例: char ch; ch=“A”; 例: char ch;
31、 ch=A; 选择题选择题:以下选项中,均是不合法的转义字符的选项是以下选项中,均是不合法的转义字符的选项是 ( )。A) B) 1011 C) 011 D) abc f 101 xf a x1f 选择题选择题:以下选项中,正确的字符常量是以下选项中,正确的字符常量是 ( )。A) c B) C) 085 D) W 选择题选择题:以下选项中,均是正确的数值常量或字符常量的是以下选项中,均是正确的数值常量或字符常量的是 ( )。A) 0.0B) a C) 3 D) +001 0f 3.9E-205 011 0 xabcd 8.9e 1e1 0 xFF00 2e2 & 0a 50. 选择题选择题:
32、下面不正确的字符串常量是下面不正确的字符串常量是 ( )。A) abcB) 1212 C) 0 D) intint a=3 ; a=3 ; float f=3.14 ; float f=3.14 ; char c=a ; char c=a ; intint a ,b=3 ,c ; a ,b=3 ,c ; intint a=3 ,b=3 ,c=3 ; a=3 ,b=3 ,c=3 ; 注意:注意:变量的初始化不是在编译阶段完成变量的初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋予的,而是在程序运行时执行本函数时赋予初始值的初始值的3.6 3.6 变量赋初值变量赋初值3.73.7不同类型
33、数据间的转换不同类型数据间的转换隐式转换隐式转换显式转换(强制转换)显式转换(强制转换) 隐式转换隐式转换什么情况下发生什么情况下发生运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换运算转换规则运算转换规则: :3.73.7不同类型数据间的转换不同类型数据间的转换doublefloatlongunsignedintchar,short低低高高说明说明:
34、:必定的转换必定的转换运算对象类型不同时转换运算对象类型不同时转换例例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a+ i*f - d/l例例 int i; float f; double d; long l;显式转换(强制转换)显式转换(强制转换)一般形式:一般形式:(类型名类型名)表达式表达式例例 ( (int)(x+yint)(x+y), (), (int
35、)x+yint)x+y (double)(3/2),(int)3.6 (double)(3/2),(int)3.6 例例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 运行结果:运行结果:x=3.600000,i=3C C运运算算符符算术运算符:算术运算符: + - + - * * / % + - / % + -关系运算符:关系运算符: = != = !=逻辑运算符:逻辑运算符: ! & |& |位运算符位运算符 : | & | &赋值运算符:赋值运算符: = = 及其扩展及其扩展条件运算符:条件运算符: ?:
36、?:逗号运算符:逗号运算符: , ,指针运算符:指针运算符: * * & &求字节数求字节数 : sizeofsizeof强制类型转换:(类型)强制类型转换:(类型)分量运算符:分量运算符: . -. -下标运算符:下标运算符: 其它其它 : ( )( )3.8算术运算符和算术表达式 运算符基本概念运算符基本概念: :运算符两端常量或者变量称为运算符两端常量或者变量称为操作数操作数按照运算符所对应的操作数的个数可按照运算符所对应的操作数的个数可将运算符分为三种:将运算符分为三种: 单目运算符单目运算符 双目运算符双目运算符 三目运算符三目运算符由操作数运算符及圆括号按照一定规由操作数运算符及圆
37、括号按照一定规则构成的式子称为则构成的式子称为表达式表达式学习运算符应注意:学习运算符应注意:运算符功能运算符功能与操作数关系与操作数关系要求操作数个数要求操作数个数(运算符为几目的)(运算符为几目的)要求操作数类型要求操作数类型运算符优先级别运算符优先级别结合方向结合方向结果的类型结果的类型 基本算术运算符:基本算术运算符: + - + - * * / % / %优先级:优先级:* * / %/ % - - + + - -结合方向:自左向右结合方向:自左向右说明:说明:“-”“-”可为可为单目单目运算符时运算符时, ,右结合性右结合性两整数相除,结果为整数两整数相除,结果为整数% %要求两侧
38、均为整型数据要求两侧均为整型数据例例 5/2 = -5/2.0 =例例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2 =例例 5/2 = 2 -5/2.0 = -2.5例例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 = ( )自增、自减运算符自增、自减运算符 + -+ - 作用:使变量值加作用:使变量值加1 1或减或减1 1前置前置 +i, -i (+i, -i (先执行先执行i i+1+1或或i-1i-1, ,再使用再使用i i值值)后置后置 i+, i- (i+, i- (先使用先使用i i值值, ,再执行再执行i i+1+1或或i
39、-1i-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=4*/ /* *+,-+,-运算练习小程序运算练习小程序* */ /main() int a=1,b=1; printf(“+a=%d,b+=%dn”,+a,b+); printf(“a=%d,b=%dn”,a,b); printf(“-a=%d,b-=%dn”,-a,b-); p
40、rintf(“a=%d,b=%dn”,a,b); +a=2,b+=1a=2,b=2-a=1,b-=2a=1,b=1说明:说明:+ - + - 不能用于常量和表达式不能用于常量和表达式如如5+5+,( (a+ba+b)+)+ -+ -结合方向:结合方向:自右向左自右向左自增、自减运算符自增、自减运算符 + -+ - 说明:说明:i i初值为初值为3 3,( (i+)+(i+)+(ii+)+(i+)+(i+)=+)=?i+ji+j?C C编译系统尽可能多的按照编译系统尽可能多的按照自自左向右左向右将若干个字符组成一个运算符将若干个字符组成一个运算符i+ji+j 等价于等价于 ( (i+)+ji+)
41、+ji i的初值为的初值为3 3 printfprintf(“%d%d,%d”%d”,i i,i+i+);); printfprintf(“%d%d,%d”%d”,i i,+ i+ i);); printfprintf(“%d%d,%d”%d”,+ i+ i,i i););自增、自减运算符自增、自减运算符 + -+ - 3, 3 4, 4 4, 3+ -* / %+ -低低高高算术运算符优先顺序算术运算符优先顺序简单赋值运算符简单赋值运算符符号:符号: = =格式:格式: 变量标识符变量标识符 = = 表达式表达式作用:将一个数据(常量或表达式)赋给作用:将一个数据(常量或表达式)赋给一个变量
42、一个变量例例 a=3;a=3; d= d=funcfunc();(); c=d+2; c=d+2;3.9赋值运算符和表达式 说明说明: :结合方向:结合方向:自右向左自右向左优先级优先级: : 较低较低左侧必须是左侧必须是变量变量,不能是常量或表达式,不能是常量或表达式赋值转换规则赋值转换规则: :使赋值号右边表达式值使赋值号右边表达式值自动自动转转换成其左边变量的类型(隐式转换)换成其左边变量的类型(隐式转换)例例 3=x-23=x-2* *y;y; a+ba+b=3;=3;例例 float f; float f; intint i; i; i=10; i=10; f=i; f=i;则则 f
43、=10.000000f=10.000000例例 intint i; i; i=2.56; i=2.56; / /* * 结果结果i=2 i=2 * */ /二、赋值运算时的类型转换:二、赋值运算时的类型转换:1. 实型赋给整型:小数舍弃实型赋给整型:小数舍弃2. 整型赋给实型:值不变,以浮点数存储整型赋给实型:值不变,以浮点数存储3. double赋给赋给float:截取前:截取前7位有效数字位有效数字4. float赋给赋给double:值不变,有效位增加(补:值不变,有效位增加(补0)5. 字符型赋给整型:字符数据放入整型变量低字符型赋给整型:字符数据放入整型变量低8位位1)字符为无符号类
44、型:)字符为无符号类型:高高8位补位补02)字符为有符号类型:)字符为有符号类型:符号扩展符号扩展字符高位为字符高位为0,高,高8位补位补0字符高位为字符高位为1,高,高8位补位补16. int型赋给型赋给long型:型:int型数据放入型数据放入long型变量低型变量低16位位高高16位进行符号扩展位进行符号扩展 int型数据为正值,高位为型数据为正值,高位为0,long高高16位补位补0 int型数据为负值,高位为型数据为负值,高位为1,long高高16位补位补17. 整型(整型(int, short, long)赋给字符型:赋给字符型:截取整型低截取整型低8位放入字符变量位放入字符变量8
45、. 长整型长整型 long 赋给赋给int整型:整型:截取整型低截取整型低16位放入位放入int变量变量9. 无符号整型赋给长整型无符号整型赋给长整型 long :高位补高位补010. 无符号整型赋给相同字节的整型:无符号整型赋给相同字节的整型:11. 有符号整型赋给相同字节的无符号整型:有符号整型赋给相同字节的无符号整型:各位内容原样复制各位内容原样复制3.9 赋值运算符和赋值表达式长给短,直接截取长给短,直接截取短给长,前面补位短给长,前面补位例例: a=b=c=5: a=b=c=5 a=(b=5) a=(b=5) a=5+(c=6) a=5+(c=6) a=(b=4)+(c=6) a=(
46、b=4)+(c=6) a=(b=10)/(c=2) a=(b=10)/(c=2)/ /* *表达式值为表达式值为5 5,a,b,ca,b,c值为值为5 5* */ / /* * b=5;a=5 b=5;a=5* */ / /* *表达式值表达式值1111,c=6,a=11c=6,a=11* */ / /* *表达式值表达式值1010,a=10,b=4,c=6a=10,b=4,c=6* */ / /* *表达式值表达式值5 5,a=5,b=10,c=2a=5,b=10,c=2* */ /赋值表达式的值与变量值相等赋值表达式的值与变量值相等, ,且可嵌套且可嵌套 说明说明: :复合赋值运算符复合赋值运算符种类:种类:+= -= += -= * *= /= %= /= %= = = = &= = = &= = |=|=a+=3a+=3a=a+3a=a+3x x* *=y+8=y+8x=xx=x* *(y+8)(y+8)x%=3x%=3x=x%3x=x%3含义:含义: = = 3.9赋值运算符和表达式思考题1 1、 a=12; a=12; a+=a-=a a+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏州技术转让采购制度
- 政府采购质疑答复制度
- 厂家药品采购管理制度
- 供销社采购内控制度
- 管理采购人员制度
- 采购物资质量管理制度
- 村级物资采购制度
- 科研试剂采购制度
- 采购部门回避制度规定
- 采购部问责制度
- 智能化系统施工方案
- 电磁屏蔽防护装置采购合同
- (一模)扬州市2026届高三模拟调研测试数学试卷(含答案详解)
- 医疗卫生信息数据安全与隐私保护规范(标准版)
- 2026年合肥职业技术学院单招职业适应性测试题库含答案详解(基础题)
- 2026年装饰装修劳务分包合同(1篇)
- 2026年人教版初二英语语法知识点归纳总结
- 2026福建水投集团沙县水务有限公司招聘4人笔试参考题库及答案解析
- 2026年春节后工地复工复产专项施工方案二
- 2025-2026学年北京市东城区九年级(上)期末英语试卷
- 2026年企业开年电气安全操作培训
评论
0/150
提交评论