1. 首页
  2. 文档大全

第3章 最简单的C程序设计(一)--数据类型、常量和变量、运算符和表达式

上传者:7****0 2022-06-04 10:42:13上传 PPT文件 1.08MB
第3章 最简单的C程序设计(一)--数据类型、常量和变量、运算符和表达式_第1页 第3章 最简单的C程序设计(一)--数据类型、常量和变量、运算符和表达式_第2页 第3章 最简单的C程序设计(一)--数据类型、常量和变量、运算符和表达式_第3页

《第3章 最简单的C程序设计(一)--数据类型、常量和变量、运算符和表达式》由会员分享,可在线阅读,更多相关《第3章 最简单的C程序设计(一)--数据类型、常量和变量、运算符和表达式(50页珍藏版)》请在文档大全上搜索。

1、1第第3章章 最简单的最简单的C程序设计程序设计一、数据类型一、数据类型二、常量和变量二、常量和变量三、运算符和表达式三、运算符和表达式四、四、C C语句语句五、五、数据的输入输出数据的输入输出六、六、顺序程序设计顺序程序设计举例举例2一、数据类型一、数据类型C C数数据据类类型型基本类型基本类型派生类型派生类型指针类型指针类型空类型空类型void字符型字符型char枚举类型枚举类型enum整型整型浮点型浮点型(实型)(实型)单精度单精度浮点浮点型型float双精度双精度浮点浮点型型double数组数组结构体结构体struct共用体共用体union短整型短整型short长整型长整型long整型

2、整型int数据类型决定:数据类型决定:1. 数据占内存字节数数据占内存字节数2. 数据取值范围数据取值范围3. 数据可进行的运算数据可进行的运算 和运算的合法性和运算的合法性*双长整型双长整型long long*布尔型布尔型_bool*复数浮点型复数浮点型float _Complex double _Complex long long _Complex长双精度长双精度浮点浮点型型long double函数类型函数类型说明:图中有*的数据类型是C99增加的。3基本数据类型基本数据类型类类型型符符号号关键关键字字数的表示范围数的表示范围字节数字节数整型整型字符字符型型实型实型有有无无signed

3、int24-3276832767 (-215215-1)-21474836482147483647(-231231-1)signed short int 2 -3276832767 (-215215-1) signed long int4-21474836482147483647(-231231-1)24unsigned int065535 (0216-1)04294967295 (0232-1) 404294967295 (0232-1)unsigned long intunsigned short int2065535 (0216-1) 有有float 4-3.4e-383.4e38有有d

4、ouble 8 -1.7e-3081.7e308有有long double816-1.7e-3081.7e308-1.2e-4932 1.2 e4932 有有signed char 1-128127 (-2727-1)说明说明: 数据类型所占字节数随编译系统不同而不完全相同。数据类型所占字节数随编译系统不同而不完全相同。 如:如:Turbo C中中int 占占2字节,字节,Visual C+中中int占占4字节。字节。 无无 unsigned char 10255 (028-1) 8018446744073709551615 (0264-1)unsigned long long intsign

5、ed long long int 8-9223372036854775808 9223372036854775807(-263263-1)401 11 11 11 11 11 11 11int型:最大:3276710 00 00 00 00 00 00 00最小:-3276811 11 11 11 11 11 11 11unsigned int型:最大:6553500 00 00 00 00 00 00 00最小:05二、二、 常量和变量常量和变量1. 标识符标识符 定义:用来标识变量、常量、函数等的字符序列定义:用来标识变量、常量、函数等的字符序列 组成:组成: 只能由只能由字母、数字、下划

6、线字母、数字、下划线组成,且第一个字母必须是字母或组成,且第一个字母必须是字母或下划线下划线 大小写敏感大小写敏感 不能使用关键字不能使用关键字 长度:各个长度:各个C编译系统有自己的规定。编译系统有自己的规定。 命名原则:命名原则: 见名知意见名知意 不宜混淆不宜混淆 如如 o与与0例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123M.D.John3days#33char$123ab6 定义:定义:程序运行时其值程序运行时其值不能改变不能改变的量(即常数)的

7、量(即常数) 分类分类: : 直接常量直接常量和和符号常量符号常量(1)(1)直接常量直接常量: : 从字面形式可判别其值。从字面形式可判别其值。 整型常量整型常量:如1000,12345,0,-345 实型常量实型常量: 十进制小数形式:如2.5,0.34,-56.79,0.0 指数形式:如12.34e3 (代表12.34103) 字符常量字符常量: 普通字符: 如 A A, , b b,? 转义字符:如 n 字符串常量字符串常量:如如 boy ,abcd, , $213.45$213.45, ,2.2.常量常量 7整型常量(整常数)整型常量(整常数)三种形式:三种形式:十进制整数:由数字十

8、进制整数:由数字0 09 9和正负号表示和正负号表示. . 如如 123,-456,0123,-456,0八进制整数:由数字八进制整数:由数字0 0开头开头, ,后跟数字后跟数字0 07 7表示表示. . 如如 0123,0110123,011十六进制整数:由十六进制整数:由0 x0 x开头开头, ,后跟后跟0 09,a9,af,Af,AF F表示表示. . 如如 0 x123,0Xff0 x123,0Xff例例 12 与与 12L例例 30000 为为int型型 65536 为为long int 型型整型常量的类型整型常量的类型根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型在在

9、整常量后加字母整常量后加字母u u或或U U,认为是认为是unsigned int 型常量型常量在在整常量后加字母整常量后加字母l l或或L L,认为是认为是long int 型常量型常量问题:问题:0123 = ( )100 x123 = ( )100 xff = ( )1083291255问题:问题:0123 = ( )100 x123 = ( )100 xff = ( )108表示形式:表示形式:十进制数形式:十进制数形式:(必须有小数点)(必须有小数点) 如如0.123, .123, 123.0, 0.0, 123.0.123, .123, 123.0, 0.0, 123.指数形式:指

10、数形式:(e e或或E E之前必须有数字;之前必须有数字; 指数必须为整数)指数必须为整数) 如如12.312.3e3 ,123E2, 1.23e4 e3 ,123E2, 1.23e4 正确正确 e-5e-5, , 1.2E-3.5 1.2E-3.5 错误错误 实型常量的类型实型常量的类型默认默认doubledouble型型在在实型常量后加字母实型常量后加字母f f或或F F,认为它是认为它是float float 型型实型常量(实数或浮点数)实型常量(实数或浮点数)aaa9字符常量字符常量定义定义: :用用单引号单引号括起来的单个括起来的单个普通字符普通字符或或转义字符转义字符. 字符常量的

11、值:字符常量的值:该字符的该字符的ASCIIASCII码码值值( (即存储形式即存储形式) )如 A65 a97 048 n10如 1 a A ? n 101转义字符转义字符: :反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示10 转义字符及其含义转义字符及其含义转义字符转义字符含义含义nvraoootbfxhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车(不换行)回车(不换行)响铃响铃单引号单引号13位位8进制数代表的字符进制数代表的字符水平制表水平制表(跳到下一个输出区)(跳到下一个输出区)退格退格换页换页反斜反斜线双引号双引号12位位16进制数代表的字符

12、进制数代表的字符如如 101 -A 012 -n 376 - x61 -a 60 -0 例例:A-101-x41-65每个输出区8列11转义字符举例转义字符举例 例例1main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);运行结果:(屏幕显示)A B CI say:”How are you?”C ProgramTurbo C12例例2 转义字符的使用。转义字符的使用。#include main() printf(*n); printf( ab ct derftgn)

13、; printf(htibbj kn);13字符常量与字符串常量不同字符常量与字符串常量不同字符串常量字符串常量定义:定义:用双引号用双引号( ( ) )括起来的字符序列括起来的字符序列存储:存储:每个字符串尾每个字符串尾自动自动加一个加一个 00 作为字符串结作为字符串结束标志束标志h e l l o 0例例 字符串字符串 hellohello在内存中在内存中a a 0例例 aa例例 空串空串 0例: char ch; ch=A; 例: char ch; ch=A; 142.2.常量常量(2 2)符号常量)符号常量: : 用标识符代表常量用标识符代表常量 定义格式:定义格式: #define

14、#define 符号常量符号常量 常量常量例例 符号常量举例符号常量举例#define PRICE 30main() int num,total; num=10; total=num*PRICE; printf(total=%d,total);运行结果:total=300如 #define PRICE 30 一般用大写字母一般用大写字母是宏定义预处理命令,是宏定义预处理命令,不是不是C语句语句注意注意: 符号常量在作用域符号常量在作用域 内不能改变。内不能改变。15二、二、常量和变量常量和变量3. 变量变量 变量变量:在程序运行期间,在程序运行期间,其值其值可以改变可以改变的量。的量。 变量必

15、须先定义,后使用变量必须先定义,后使用 定义定义变量变量时指定该变量的名字和类型时指定该变量的名字和类型 变量名和变量值变量名和变量值是是两个不同的概念两个不同的概念 变量名实际上是以一个名字代表的一个存储地址变量名实际上是以一个名字代表的一个存储地址 从变量中取值,实际上是通过变量名找到相应的从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据内存地址,从该存储单元中读取数据。163. 变量变量 变量名变量名与与变量值变量值例: int a,b,c; float data;决定分配字节数和数的表示范围合法标识符变量的使用:变量的使用:先定义,后使用先定义,后使用3存储单

16、元存储单元变量值变量值变量名变量名an变量定义的一般格式:变量定义的一般格式: 数据类型数据类型 变量变量1,变量,变量2,变量,变量n; 变量名变量名: 内存单元地址内存单元地址 变量值变量值: 变量所在内存单元中的内容变量所在内存单元中的内容例例1 int student; stadent=19; /Undefined symbol statent in function main 例例2 float a,b,c; c=a%b; /ointIllegal use of floating p in function main 当前值当前值(按名存取按名存取)( 一个时刻只有一个值一个时刻只有

17、一个值)17编译程序根据变量定义为其分配指定字节的内存单元.地址int a=1, b=-3,c;abc2字节2字节2字节地址地址.内存1-3随机数3. 变量变量变量初始化变量初始化:定义时赋初值定义时赋初值 例: 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; /*错误*/ 变量定义位置:变量定义位置:一般一般放在函数开头放在函数开头main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);变量定义可执行

18、语句main() int a,b=2; a=1; float data; /*在语句后在语句后*/ data=(a+b)*1.2; printf(“data=%fn”,data);18整型变量整型变量 占字节数随机器不同而不同占字节数随机器不同而不同 shortintlonglong longshortintlonglong long 可用可用sizeof(sizeof(类型标识符)测量类型标识符)测量注意:注意:整型变量的取值范围(超出范围,出现溢出)。整型变量的取值范围(超出范围,出现溢出)。 实型变量(浮点型变量)实型变量(浮点型变量)floatfloat:占占4 4字节,提供字节,提供

19、6 67 7位有效数字位有效数字doubledouble:占占8 8字节,提供字节,提供15151616位有效数字位有效数字Long doubleLong double:占占1616字节字节, ,提供提供1 18 81 19 9位有效数字位有效数字例例 float a;a=111111.111; /* a=111111.1*/double b;b=111111.111; /* b=111111.111*/注意注意:实型数据在进行舍入时,可能会产生误差。实型数据在进行舍入时,可能会产生误差。输出: 111111.109375 111111.11100019字符型变量字符型变量字符变量存放字符字符

20、变量存放字符ASCIIASCII码码charchar与与intint数据间可数据间可通用通用, ,并能并能进行算术运算进行算术运算。例:向字符变量赋整数。例:向字符变量赋整数。 #include #include main()main() char c1,c2; char c1,c2; c1=97; c2=98; c1=97; c2=98; printf( printf( %c %cn%c %cn,c1,c2);,c1,c2); printf( printf( %d %dn%d %dn,c1,c2);,c1,c2); 输出输出: a b 97 98c1=a; c2=b;20字符型变量字符型变量

21、字符变量存放字符字符变量存放字符ASCIIASCII码码charchar与与intint数据间可数据间可通用通用, ,并能并能进行算术运算进行算术运算。例例 a=a=D D; /; /* * a=68; a=68; * */ / x= x=A A+5; /+5; /* * x=65+5; x=65+5; * */ / s= s=! !+ +G G / /* * s=33+71; s=33+71; * */ /没有字符串变量,用字符数组存放21字符与字符代码字符与字符代码: 大多数系统采用ASCII字符集 字母:A Z,a z 数字:09 专门符号:29个:! ” # & ( ) *等

22、空格符:空格、水平制表符、换行等 不能显示的字符:空(null)字符(以0表示)、警告(以a表示)、退格(以b表示)、回车(以r表示)等字符型变量的取值范围字符型变量的取值范围22注意: 数字字符与数字的区别如:字符1和整数1是不同的概念: 字符1只是代表一个形状为1的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节 整数1是以整数存储方式(二进制补码方式)存储的,占2个或4个字节0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 123#include main() char c1; /默认为signed charunsigned

23、char c2;c1=255;c2=255;printf(c1=%dnc2=%dn,c1,c2);输出:c1=-1c2=255 字符型:字符型: signed char -128127 unsigned char 0255字符型变量的取值范围字符型变量的取值范围 244.常变量常变量 (C99允许使用常变量) 概念:概念:给变量指定一个值,而且给变量指定一个值,而且在变量存在期间在变量存在期间 其值不能改变其值不能改变。 如: const int a=3; 注意:注意:常变量与符号常量是不同的。常变量与符号常量是不同的。 常变量:常变量:具有变量的基本属性(有类型、占存储具有变量的基本属性(有

24、类型、占存储 单元),只是不允许改变其值。单元),只是不允许改变其值。 符号常量:符号常量:代表一个字符串,不占存储单元,代表一个字符串,不占存储单元, 在预编译时被替换后,就不存在了。在预编译时被替换后,就不存在了。25常量与变量综合举例常量与变量综合举例: #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(total=%f,ch1=%cn,total,ch1); 宏定义变量定义输出结果运行结果:total=37.500000, ch1=

25、d计算26三、运算符和表达式三、运算符和表达式C运运算算符符算术运算符:(算术运算符:(+ - + - * * / % + - / % + -)关系运算符:(关系运算符:( = != = !=)逻辑运算符:(!逻辑运算符:(! & |& |)位运算符位运算符 :(:( | & | &)赋值运算符:(赋值运算符:(= = 及其扩展)及其扩展)条件运算符:(条件运算符:(?:?:)逗号运算符:(逗号运算符:(, ,)指针运算符:(指针运算符:(* * & &)求字节数求字节数 :(:(sizeofsizeof)强制类型转换:(类型)强制类型转换:(类

26、型)分量运算符:(分量运算符:(. -. -)下标运算符:(下标运算符:()其它其它 :(:(( ) -( ) -)27学习运算符应注意:学习运算符应注意: 运算符功能运算符功能 与运算量关系与运算量关系要求运算量个数要求运算量个数要求运算量类型要求运算量类型 运算符优先级别运算符优先级别 结合方向结合方向 结果的类型结果的类型28n算术运算符和表达式算术运算符和表达式 基本算术运算符:基本算术运算符: + + - - * * / % / %结合方向:从左向右结合方向:从左向右优先级:优先级: - - - -* * / % / % - - + -+ - (2) (3) (4)(2) (3) (

27、4)说明:说明: “- -”可为可为单目单目运算符时运算符时, ,右结合性右结合性两整数相除,结果为整数两整数相除,结果为整数% %要求两侧均为整型数据要求两侧均为整型数据例 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 ()29n自增、自减运算符自增、自减运算符+ -作用:使变量值加作用:使变量值加1 1或减或减1 1种类:种类:前置前置 +i, -i (+i, -i (先执行先执行i i+1+1或或i-1i-1,

28、再使用再使用i i值)值)后置后置 i+,i- (i+,i- (先使用先使用i i值值, ,再执行再执行i i+1+1或或i-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=430n自增、自减运算符自增、自减运算符+ -+ -说明:说明:+ - + - 不能用于常量和表达式不能用于常量和表达式, ,如如5+5+,( (a+b)+a+b)+ -+ -结合方向:结合

29、方向: 自右向左自右向左优先级:优先级:- + - - + - -* * / % -+ - / % -+ - (2) (3) (4)(2) (3) (4)例例 - -i+ i+ -(i+) -(i+) i=3; printf( i=3; printf(%d%d,-i+); ,-i+); /-3/-3 例例 j+k; (j+)+k;j+k; (j+)+k;31n赋值运算符和表达式赋值运算符和表达式 简单赋值运算符简单赋值运算符符号:符号: = =格式:格式: 变量标识符变量标识符= =表达式表达式作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量复合赋值运算

30、符复合赋值运算符种类种类:+= -= += -= * *= /= %= /= %= = = = &= = |= &= = |=含义:含义: exp1 op= exp2exp1 op= exp2 exp1 = exp1 op exp2exp1 = exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例 a=3; d=func(); c=d+2;32 说明说明: :结合方向:结合方向:自右向左自右向左 优先级优先级: 14左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式赋值转换赋值转换规则规则: :使赋值号右边表达式值使赋值

31、号右边表达式值自动自动转换转换成其左边变量的类型成其左边变量的类型例 3=x-2*y; a+b=3;例 float f; int i; i=10; f=i;则 f=10.0例 int i; i=2.56; /结果i=2;33例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/ b=5;a=5/表达式值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=2赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套说明说明: :结合方向:结合方向

32、:自右向左自右向左优先级优先级: 14左侧必须是变量左侧必须是变量,不能是常量或表达式,不能是常量或表达式34说明说明: :结合方向:结合方向:自右向左自右向左优先级优先级: 14左侧必须是变量左侧必须是变量,不能是常量或表达式,不能是常量或表达式赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套例: a=12; a+=a-=a*a例: int a=2; a%=4-1; a+=a*=a-=a*=3; /a=-264 等价于a=a+(a=a-(a*a)/a=0 等价于a=a+(a=a*(a=a-(a=a*3)35n逗号运算符和表达式逗号运算符和表达式 形式:形式:表达式表达式

33、1,表达式表达式2,表达式表达式n 结合性结合性:从左向右从左向右 优先级优先级: 15 逗号表达式逗号表达式的值:的值:等于表达式等于表达式n的值的值 用途:用途:常用于循环常用于循环for语句中语句中例例 a=3*5,a*4 a=3*5,a*4,a+5例例 x=(a=3,6*3) x=a=3,6*a例例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /a=15,表达式值表达式值60/a=15,表达式值表达式值20/赋值表达式,表达式值赋值表达式,表达式值18,x=18/逗号表达式逗号表达式,表达

34、式值表达式值18,x=3/1,2,3/3,2,336n逗号运算符和表达式逗号运算符和表达式形式:形式:表达式表达式1,表达式表达式2,表达式表达式n结合性结合性:从左向右从左向右优先级优先级: 15逗号表达式逗号表达式的值:等于表达式的值:等于表达式n的值的值用途:用途:常用于循环常用于循环for语句中语句中例例:#include main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);运行结果:运行结果:x=337n关系运算符和表达式关系运算符和表达式 关系运算符关系运算符 种类种类: = != 结合方向:自左向右结合方向:自左

35、向右 优先级别:优先级别:=!=优先级优先级6(高)(高)优先级优先级7(低)(低)例例 ca+b /c(a+b)ca+b /c(a+b) ab!=c /(ab)!=c ab!=c /(ab)!=c a=bc /a=(bc) a=bc /a=(bc /a=(bc) a=bc /a=(bc)关系表达式的值:是逻辑值关系表达式的值:是逻辑值“真真”或或“假假”,用,用1和和0表示表示例例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表达式值1/表达式值1/表达式值0/d=1/f=038关系运算注意:关系运算注意:例例 若若a=0; b=0.5; x=0.3;

36、 则则 a=x278在在C中是允许的,中是允许的, 值为值为0例例 int i=1, j=7,a; a=i+(j%4!=0); 则则a=2例例 a0 结果为结果为 A100 结果为结果为1039关系运算注意:关系运算注意:例例 注意区分注意区分“=”与与“=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);例例 应避免对应避免对实数实数作相等或不等的判断作相等或不等的判断如如 1.0/3.0*3.0=1.0 结果为结果为可改写为:可改写为:fabs(1.0/3.0*3.0-1.0)1e-

37、6040ab!a!ba&ba|b真假真假假假真真n逻辑运算符和表达式逻辑运算符和表达式 逻辑运算符逻辑运算符种类:种类: ! & |逻辑运算真值表逻辑运算真值表C C语言中语言中, , 运算量运算量: : 0 0表示表示“假假” 非非0 0表示表示“真真” 运算结果运算结果: : 0 0表示表示“假假” 1 1表示表示“真真”真假假假假假真真假假真真真假真真41! (2)& (11)| (12)高低例例 a=x & xb&xy a=b|x=y !a|abl优先级:l结合方向:! :从右向左& :从左向右| :从左向右 / (a=x) &

38、(xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)42! (2)& (11)| (12)高高低低l优先级:l结合方向:! :从右向左从右向左& :从左向右从左向右| :从左向右从左向右例例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|84-!0 c&d值为1值为0值为1值为1值为1值为1/(53)&2|(8(4-(!0) 值为143! (2)& (11)| (12)高低l优先级:l结合方向:! :从右向左& :从左向右| :从左向右短路特性短路特性:逻辑表达式求解时,并非所有

39、的逻辑运算符:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符表达式的解时,才执行该运算符例例 a&b&c /只在只在a为真时,才判别为真时,才判别b的值的值 只在只在a、b都为真时,才判别都为真时,才判别 c的值的值例例 a|b|c /只在只在a为假时,才判别为假时,才判别b的值的值 /只在只在a、b都为假时,才判别都为假时,才判别 c的值的值例例 a=1;b=2;c=3;d=4;m=1;n=1; (m=ab)&(n=cd)/结果结果m=0,n=144 判

40、别某一年是否闰年,用逻辑表达式表示 闰年的条件是符合下面二者之一:能被4整除,但不能被100整除,如2008能被400整除,如2000(year % 4 = 0 & year 100 !=0) | year % 400 = 0如果表达式值为1,则闰年;否则为非闰年45l 这是C99所增加的一种数据类型。l 可以将关系运算和逻辑运算的结果存到一个逻辑型变量中,以便于分析和运算。l 定义逻辑型变量用类型符_Bool。 例如:_Bool leap; _Bool a,b;l 在头文件stdbool.h中,将bool定义为_Bool的同义词,同时定义了两个符号常量true和false。 true

41、代表1,false代表0,用它们表示真和假。l 如果在源文件中包含了头文件stdbool.h,那么逻辑型变量的类型名可替换为bool。 例如:bool leap; bool a,b; 46 float score; _Bool a,b; /定义逻辑型变量a,b scanf(%f,&score); a=score=60; b=score=69; if(a&b) printf(The grade is Cn);在源文件中加上#include 命令, 程序可改为: float score; bool a,b; /定义逻辑型变量a,b scanf(%f,&score); a=s

42、core=60; b=score=69; if(a=true&b=true) printf(The grade is Cn);47程序如下: #include /包含头文件 main() float score; bool a,b; /定义逻辑型变量a,b scanf(%f,&score); a=score=60; b=score=69; if(a=true&b=true) printf(The grade is Cn);说明:说明:逻辑型变量原本是在C+中使用的,现在把它吸收进 C语言新标准,以增加程序可读性。但目前有些C编译系统不允许使用逻辑变量。在VC+中可使用逻

43、辑变量,但要把文件类型改为.cpp。48n不同类型数据间的转换不同类型数据间的转换l隐式转换隐式转换 什么情况下发生什么情况下发生运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换 运算转换规则运算转换规则: :不同类型数据运算时先不同类型数据运算时先自动自动转换成转换成同一类型同一类型49doublefloatlongunsignedintchar,sh

44、ort低低高高说明说明:必定的转换必定的转换运算对象类型不同时转运算对象类型不同时转换换例例 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;50l显式转换(强制转换)显式转换(强制转换) 一般形式:一般形式:(类型名类型名)(表达式)表达式)例例 (int)(x+y)(int)(x+y) (int)x+y (int)x+y (double)(3/2) (double)(3/2) (int)3.6 (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=3精度损失问题较高类型向较低类型转换时可能发生较高类型向较低类型转换时可能发生


文档来源:https://www.renrendoc.com/paper/212531647.html

文档标签:

下载地址