版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Chap 2 基本数据类型和表达式基本数据类型和表达式l数据类型数据类型基本数据类型l整型intl实型(浮点型)float doublel字符型char构造数据类型数组、结构、联合、枚举指针类型l对数据的操作运算对数据的操作运算运算符和表达式Chap 2 基本数据类型和表达式基本数据类型和表达式l常量和变量常量和变量l整数类型整数类型l实数类型实数类型l字符类型字符类型l表达式表达式l数据的存储和类型转换数据的存储和类型转换2.1 常量和变量常量和变量2.1.1 2.1.1 常量常量l常量(常数):数据常量(常数):数据123 (整型)4.56 (实型) A (字符型)l符号常量:用标识符表示
2、的常量数据符号常量:用标识符表示的常量数据:PI:EPS通常用大写字母例例21 求球的表面积和体积求球的表面积和体积# include void main( ) float r, s, v; scanf(%f, &r); s=4.0*3.14*r*r ; v=4.0/3.0*3.14*r*r*r ; printf(s=%f, v=%fn, s, v);s=4.0*3.14159159*r*r ; v=4.0/3.0*3.14159159*r*r*r ; 例例22 符号常量符号常量# define PI 3.14# include void main( ) float r, s, v;
3、scanf(%f, &r); s=4.0*PI*r*r ; v=4.0/3.0*PI*r*r*r ; printf(s=%f, v=%fn, s, v);# define PI 3.14159159 2.1.2 变量变量C C语言中的量语言中的量l常量常量(常数):数据(常数):数据l符号常量符号常量:用标识符表示的常量数据:用标识符表示的常量数据在程序的运行过程中,其值不能被改变在程序的运行过程中,其值不能被改变l变量变量:存放数据的:存放数据的工作单元工作单元在程序的运行过程中,其值可以改变在程序的运行过程中,其值可以改变变量的定义变量的定义变量定义的一般形式 类型名 变量表;变量
4、名:小写字母,见名知义变量名:小写字母,见名知义类型名:类型名:l整型intl实型(浮点型)float doublel字符型char变量的定义变量的定义int i, j, k; (定义定义i, j, k为整型变量)为整型变量)char c; (定义定义c为字符型变量)为字符型变量)float x, y;double area, length;变量名代表内存中的一个存储单元变量名代表内存中的一个存储单元用于存放该变量的值用于存放该变量的值该存储单元的大小由变量的数据类型决定该存储单元的大小由变量的数据类型决定变量的定义与使用变量的定义与使用变量必须变量必须 先先定义,后后使用。# include
5、 void main( ) int x, y; x = 3; y = x*x ; printf(“%d”, y ) ;一个变量名只能定义一次。 变量一般都定义在程序的头上,不能定义在程序的中间或后面。变量的使用变量的使用变量: 先定义,后使用 先赋值,后引用# include void main( ) int x, y; x = 3; y = x*x ; printf(“%d”, y ) ;变量的赋值变量的赋值l赋初值:在定义变量时对它赋值 int a = 5, b = 3;l赋值表达式:int a, b;a = 5;b=3;l输入函数: scanf(“%d%d”, &a, &
6、b);2.2 整数类型整数类型2.2.1 2.2.1 整型常量(整数)整型常量(整数)三种表现形式l十进制整数:正、负号,十进制整数:正、负号,0 09 9,首位不是,首位不是0 0例:10,123l八进制整数:正、负号,八进制整数:正、负号,0 07 7,首位是,首位是0 0例:010,0123l1616进制整数:正、负号,进制整数:正、负号,0 09 9,a-f,A-F,a-f,A-F,前缀前缀是是0 0 x,0Xx,0X例:0 x10,0 x123123 = 1111011 (B) 二进制 =173 (O) 八进制 =7B (X) 十六进制int i=0173;int j=0 x7b;i
7、nt k=123;例:16 020 0 x10 10 012 0XA 整型变量整型变量int ai, bi, ci, di = 0;ai = 1;bi = -27;ci = 012;整型变量的值是整数,它的取值范围有限最小取值范围 32768,32767 整型数据的输入输出整型数据的输入输出printf(格式控制格式控制, 输出参数输出参数1, . , 输出参数输出参数n);scanf(格式控制格式控制, 输入参数输入参数1, . , 输入参数输入参数n);格式控制说明 % %d:以十进制形式输入、输出整数 %o:以八进制形式输入、输出整数 %x:以十六进制形式输入、输出整数 例例2-3# i
8、nclude void main( ) printf(%d, %o, %xn, 10, 10, 10); printf(%d, %d, %dn, 10, 010, 0 x10); printf(%d, %xn, 012, 012); 运行结果为:运行结果为: 10, 12, a 10, 8, 16 10, a001010例例2-4# include void main( ) int a, b; scanf(%o%d, &a, &b); printf(%d%5dn, a, b); printf(%x, %dn, a, b); 输入:输入:17 17运行结果为:运行结果为:15 1
9、7f, 172.3 实型数据实型数据2.3.1 实型常量实型常量(实数实数)浮点表示:0.123 123.4 1.科学计数法:123e4 0.2e-12.3.2 实型变量实型变量单精度浮点型float x, y, z;双精度浮点型double u, v, w;4字节存储8字节存储数据精度和取值范围数据精度和取值范围 数据精度 取值范围单精度 七位有效数字 (10-38 1038)双精度 十六位有效数字 (10308 10308 )l 数据精度数据精度 与与 取值范围是两个不同的概念:取值范围是两个不同的概念: float x = 1.23456789; float y = 123456789;
10、 虽在数据表示范围内,但无法精确表达。 float z = 1.2e55 z的精度要求不高,但数据表示范围超出。l并不是所有的实数都能在计算机中精确表示。并不是所有的实数都能在计算机中精确表示。l 实型常量的类型都是实型常量的类型都是doublex=1.234568y=1.234567e82.3.3 实型数据的输入和输出实型数据的输入和输出l输出 printf( )float 和和double使用相同的格式控制说明使用相同的格式控制说明%f:以小数形式输出浮点数,保留以小数形式输出浮点数,保留6位小数。位小数。 %e:以指数形式输出以指数形式输出 位整数位整数.5 位小数位指数位小数位指数 例
11、2-5 实型数据的输出实型数据的输出# include void main( ) float f = 123.45; double d = 3.1415926; printf(%f, %en, f, f); printf(%f, %en, d, d); printf(%5.3f, %5.2f, %.2fn, d, d, d); 一共一共5位,小数位,小数3位,小数点一位位,小数点一位运行结果为:运行结果为:123.450000, 1.23450e+023.141593, 3.14159e+003.142, 3.14, 3.14例2-6假定float的精度为7位,double的精度为16位 #
12、include void main( ) float f; double d1, d2; printf(f = %f n d1 = %f n d2 = %f n, f, d1, d2); 运行结果为:运行结果为: 实型数据的输入实型数据的输入scanf( )float 和和double使用不同的格式控制说明使用不同的格式控制说明%f和和%e相同相同 %f : 以小数或指数形式输入一个单精度浮点数%e%lf: 以小数或指数形式输入一个双精度浮点数%le 例2-7# include void main( ) float f1; double d1; scanf(%f%lf, &f1, &a
13、mp;d1); printf(f1 = %f n d1 = %f n, f1, d1);输入:输入:12 1234567.12345运行结果为:运行结果为:f1=12.000000d1=1234567.1234502.4 字符类型字符类型2.4.1 字符常量字符常量a A 9 + $ ASCII字符集:列出所有可用的字符每个字符:惟一的次序值( ASCII 码)0-9A-Za-z2.4.1 字符常量字符常量字符的存储字符的存储在内存中,每个字符占用一个字节,存储该字符的在内存中,每个字符占用一个字节,存储该字符的ASCII码码字符字符 ASCII码码 内存内存A 65 0100 0001 B
14、66 0100 0010 字符的数值特征字符的数值特征字符可以当整数用,ASCII码A+1 =?2.4.2 字符变量字符变量 char c1, c2, c3; c1=2; c2=#; c3=A; 或 c3=65; int i; i=65; 或 i=A; 整型变量和字符变量的定义和赋值可以互换 【 ASCII码范围】2.4.3 字符型数据输入输出字符型数据输入输出lscanf( )和printf( ) %cchar ch;scanf(%c, &ch);printf(%c, ch);lgetchar( )和putchar( )char ch;ch=getchar( );putchar(ch
15、);输入输出一个字符例2-9# include void main( ) char ch1, ch2; ch1=getchar(); ch2=getchar(); putchar(ch1); putchar(#); putchar(ch2);运行结果为:运行结果为:A#b输入:输入:Ab例2-10# include void main( ) char ch1, ch2, ch3; scanf(%c%c%c, &ch1, &ch2, &ch3); printf(%c%c%c%c%c, ch1, #, ch2, #, ch3);运行结果运行结果1为:为:A#b#C输入输入1
16、:AbC运行结果运行结果2为:为:A# #b输入输入2:A bC输入数据包括字符和数值的混合输入数据包括字符和数值的混合# include void main( ) int i; char c; float x ; scanf(%d%c%f, &i, &c, &x ); printf( %d %c %f, i, c, x );输入:3a1.2输出:3 a 1.200000 数据之间不能用空格等间隔,也不需要单引号例2-11已知:b的ASCII码98# include void main( ) printf(%c,%dn, b, b); printf(%c,%dn, 98
17、, 98); printf(%c,%dn, 97, b-1);运行结果为:运行结果为:b,98b,98a,970110 0010b98b98# include void main( ) char ch=b; printf(%c,%dn, ch, ch);0110 0010b9814262b9801420 x62 printfb %c putchar98 %d142 %o62 %x scanfb %c getchar98 %d142 %o62 %xscanf(%c, &ch);字符运算字符运算l大小写英文字母转换大小写英文字母转换 b - a = B - A z - a = Z - A
18、m M l数字字符和数字数字字符和数字 9 - 0 = 9 - 0 9 = 9 + 08 8a-AA-a0lm - a + A = MlM - A + a = ml8 - 0 = 8l8 + 0 = 82.4.4 转义字符转义字符l反斜杠后跟一个字符或数字l字符常量,代表一个字符 n 101 x41 Al所有字符都可以用转义字符表示2.5 表达式表达式2.5.1 算术表达式算术表达式l算术运算符算术运算符单目 + - + -双目 + - * / %注意!注意!l % 模(求余) 整型数据565,941,10040l / 整数除整数,得整数1/20,9/42l双目运算符两侧操作数的类型要相同算术
19、运算符的优先级和结合性算术运算符的优先级和结合性单目 + - + -双目 * / %双目 + -高高低从右向左-5+3%2 = (-5)+(3%2) = -43*5%3 = (3*5)%3 = 0-i+ -(i+)算术表达式算术表达式例例2-15 数学式数学式 - C表达式表达式s(s-a)(s-b)(s-c)(x+2)e2xs*(s-a)*(s-b)*(s-c)(x+2)*exp(2*x)2.5.2 赋值赋值表达式表达式l赋值运算符赋值运算符 = =l赋值表达式赋值表达式变量表达式l计算赋值运算符右侧表达式的值l将赋值运算符右侧表达式的值赋给左侧的变量l将赋值运算符左侧的变量的值作为表达式的
20、值n = 2;n = n+1;l赋值运算符的优先级和结合性赋值运算符的优先级和结合性优先级较低,从右向左x=y=3; x=(y=3)例例 大小写字母转换大小写字母转换输入一个小写字母,输出对应的大写字母。输入一个小写字母,输出对应的大写字母。# include void main( ) char ch ; scanf(%c, &ch); ch = ch - a + A; printf(%cn, ch); 2.5.3 逗号逗号表达式表达式l表达式表达式1, 表达式表达式2, ,表达式,表达式n先计算表达式,然后计算表达式,,最后计算表达式n的值,并将表达式n的值作为逗号表达式的值.l逗号
21、运算符的优先级最低,从左向右逗号运算符的优先级最低,从左向右a = (3+5 , 4*6 ) a = 3+5 , 4*6 a=24a=8自增运算符和自减运算符自增运算符和自减运算符l自增运算符自增运算符 + 和自减运算符和自减运算符 -int n,n+ +n n- -n (只适合变量运算)使变量的值增1或减1+n n+ n=n+1-n n- n=n-1取变量的值作为表达式的值+n:n=n+1;取n值作为表达式+n的值n+:取n值作为表达式n+的值;n=n+1自增运算和自减运算自增运算和自减运算int i, k;i=2;k=+i;i=2;k=i+;i=3i=3k=3k=2k=ii=i+1i=i+
22、1k=i例例2-17#include void main( ) int a, b, c; b=5; c=5; a=+b+c-; printf(%d,%d,%dn, a, b, c); a=b-c; printf(%d,%d,%dn, a, b, c); a=-b+c; printf(%d,%d,%dn, a, b, c);b=b+1, a=b+c, c=c-1a=b-c, b=b-1a=-(b+)+ca=(b-)-ca=-b+c, b=b+1复合算术赋值运算符复合算术赋值运算符l赋值运算符赋值运算符简单赋值运算符 =复合(算术)赋值运算符 += -= *= /= %=l赋值表达式赋值表达式变量
23、 赋值运算符 表达式x += expx = x + (exp) 例例2-18#include void main( ) int x, y, z; z=(x=7)+(y=3); printf(%d,%d,%dn, x, y, z); x=y=z=x+2; printf(%d,%d,%dn, x, y, z); x*=y-3; printf(%d,%d,%dn, x, y, z);x=7, y=3, z=x+yz=x+2, y=z, x=zx=x*(y-3)2.6 数据的存储和类型转换数据的存储和类型转换2.6.1 数据的存储数据的存储l整型数据的存储整型数据的存储设整数占2个字节1 000 00
24、01 1000 00010 000 0001 1000 0001符号位符号位1:负数:负数0:正数:正数原码原码 反码反码 补码补码正数的原码、反码和补码相同1的补码 0 000 0000 0000 000132767的补码 0 111 1111 1111 1111(215-1)负数 -1l原码 1 000 0000 0000 0001 l反码 1 111 1111 1111 1110 原码取反l补码 1 111 1111 1111 1111 反码1原码原码 反码反码 补码补码32767补码 0 111 1111 1111 1111-32767原码 1 111 1111 1111 1111反码
25、 1 000 0000 0000 0000 原码取反补码 1 000 0000 0000 0001 反码1-32768 = -32767-1补码 1 000 0000 0000 0000 -32768 -1 0 1 32767 32767 0111 1111 1111 1111 1 0000 0000 0000 0001 0 0000 0000 0000 0000 -1 1111 1111 1111 1111 -2 1111 1111 1111 1110 -32767 1000 0000 0000 0001 -32768 1000 0000 0000 000032768 = 32767+110
26、00 0000 0000 0000 = -32768-32769 = -32768-10111 1111 1111 1111 = 32767实型和字符型数据的存储实型和字符型数据的存储l实型数据的存储实型数据的存储-1.2345e+02符号位 阶码 尾数l字符型数据的存储字符型数据的存储一个字节存储ASCII码2.6.2 整数类型的扩展整数类型的扩展有符号 无符号 数据长度int unsigned int 16或32short int unsigned short int 16long int unsigned long int 32无符号 unsigned设整数占2个字节0000 0000
27、0000 0000 01111 1111 1111 1111 65535(216-1)整数类型的最小取值范围整数类型的最小取值范围int -3276832767 (-215215-1)short intlong int -2147483648 2147483647 (-231231-1)unsigned int 065535 (0216-1)unsigned short int unsigned long int 04294967295 (0232-1)整型常量的表示整型常量的表示l不能超出整型数据的取值范围不能超出整型数据的取值范围l比长整型数还要大的数只能用实数来表示比长整型数还要大的数只
28、能用实数来表示l整型常量的类型整型常量的类型整数后的字母后缀l123L longl123U unsignedl123LU unsigned long数值整型数据的输入输出整型数据的输入输出printf(格式控制格式控制, 输出参数输出参数1, . , 输出参数输出参数n);scanf(格式控制格式控制, 输入参数输入参数1, . , 输入参数输入参数n);格式控制说明 % 十进制 八进制 十六进制int %d %o %xlong %ld %lo %lxunsigned %u %o %xunsigned long %lu %lo %lx例例2-19#include void main( ) int ai; long cl; unsigned bu; unsigned long dul; ai = 32767; bu = 65535U; cl = -2147483648L; dul = 4294967295LU; printf(%d,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论