第三章数据类型、运算符与表达式 3.1C的数据类型 短整型( short) 整型整型(in 数值类型 长整型(ong) 实型∫单精度型(noa 类型字符类型(char 双精度型( double) 枚举类型(enum) 数组类型 数据 构造』结构体类型(truc 类型 类型共用体类型( union) 文件类型(FILE) 指针类型 空类型
1 3.1 C的数据类型 短整型(short) 整型(int) 长整型(long) 整型 实型 数值类型 字符类型(char) 枚举类型(enum) 数组类型 结构体类型(struct) 共用体类型(union) 文件类型(FILE) 基本 类型 数据 类型 单精度型(float) 双精度型(double) 第三章 数据类型、运算符与表达式 构造 类型 指针类型 空类型
3.2常量与变量 常量 常量一程序运行过程中其值不变的量 2.类型 1)整型常量:允许用10进制,8进制(数前加数 0),16进制(数前加数字0和X) 例1main() c; a=10 b=010 c=0x10; printi(“ d,%d,%dmn”,a,b,c) 行结果:10,8,16
2 一 常量 1. 常量—程序运行过程中其值不变的量 2. 类型 (1) 整型常量 : 允许用 10进制, 8进制 (数前加数 0), 16进制(数前加数字0和X) 例1 main ( ) { int a,b,c; a=10; b=010; c=0x10; printf(“%d,%d,%d \n”,a,b,c); } 3.2 常量与变量 运行结果:10 , 8 , 16
(2)实型常量: 日常记数法:如:199935,-2001.98 两种形式 科学记数法:如:199935e3 错误如:c2.5e8e8e 例2main() i float f; f=199935; printf((“%f,%eⅦn”,f,f); 运行结果:19935,19993563
3 (2) 实型常量: 日常记数法:如:1999.35 , -2001.98 错误如 : e2.5 .e8 e8 e 科学记数法:如: 1.99935e3 两种形式 运行结果 : 1999.35, 1.99935e3 例 2 main ( ) { float f ; f = 1999.35 ; printf ( “%f, %e \n”, f , f ) ; }
(3)字符常量用单引号括起来的一个字符或转义字符 例: 0 “#,“a等 转义字符 含义 换行 横向跳格(即跳到下一个输出区) 竖向跳格 b 退格 回车 f 走纸换页 反斜杠 输出单引号 000 1-3位八进制所代表的字符 Ihh 1-2位十六进制所代表的字符
4 (3)字符常量—用单引号括起来的一个字符或转义字符. 例: ‘A’, ‘o’ , ‘1’, ‘#’, ‘a’ 等 \n 换行 \t 横向跳格(即跳到下一个输出区) \v 竖向跳格 \b 退格 \r 回车 \f 走纸换页 \\ 反斜杠 \’ 输出单引号 \ooo 1--3位八进制所代表的字符 \xhh 1--2位十六进制所代表的字符 转义字符 含义
例 main O printf(%c,%c,%c,%cⅧn”,A',"\101,0101,0x41”); 运行结果:A,A,A,A (4)字符串常量-)双引号括起来的一串字符序列 例 “ CHINA”,“BBI”,“ I am a teacher 等 而“A”与‘A’在C语言中是不同的,前者是字符串常量, 后者是字符常量 在内存中 01000001 01000001 是字符串结束标 记输入时系统 自动加上,输出时 不输出
5 (4) 字符串常量---用双引号括起来的一串字符序列. 例: “CHINA”,“BBI”,“I am a teacher.” 等 而 “A” 与 ‘A’ 在C语言中是不同的, 前者是字符串常量, 后者是字符常量. 在内存中: ‘A’ “A” 01000001 例: main ( ) { printf(“%c,%c,%c,%c\n”,‘A’,‘\101’,‘\0101’,‘\0x41’) ; } 01000001 \0 是字符串结束标 记,输入时,系统 自动加上,输出时 不输出 运行结果: A, A, A, A
(5)符号常量 #include <stdio # define pl3.1415928/*PI是符号常量,般 用大写在该作用域内不可赋其他值 void main o i float r s; scanf(“%f”,&r); s=2*Pr printf(“s=%fⅦn”,s); 好处:若程序里多处出现该值发变化, 仅在 define中作一次修改
6 (5)符号常量 #include # define PI 3.1415928 /* PI是符号常量,一般 用大写,在该作用域内不可赋其他值 */ void main ( ) { float r, s; scanf (“ %f ”, &r); s=2*PI*r; printf (“ s=%f \n ”, s); } 好处: 若程序里多处出现,该值发 变化, 仅在 define中作一次修改
变量 1.变量-程序执行过程中其值可以发生变化的量 2起名规则:在C中变量名,函数名,文件名,数组名,等均 称标识符( identifier).可由字母数字和下划线组成且第 个必为字母或下划线(系统常用,前8或31个有效(视不同版 本而定) 注意:大小写字母有区别;如:a1与A1为不同的变量名 不可用关键字; 如:int,for,if等 不可出现空格; 如:stu1,a1i 见名知意; 如: sum. sort 等等 3.类型及定义 在C中用变量前一定先定义,编译系统对不同类型变量分配 不同数量的内存单元存放其值;系统对不同类型变量进行 不同操作
7 二 变量 1. 变量-----程序执行过程中其值可以发生变化的量 2. 起名规则:在C中变量名, 函数名, 文件名, 数组名, 等均 称标识符(identifier). 可由字母,数字和下划线组成,且第一 个必为字母或下划线(系统常用),前8或31个有效(视不同版 本而定) 注意: 大小写字母有区别; 如: a1与A1为不同的变量名 不可用关键字; 如: int, for, if 等 不可出现空格; 如: stu 1, a 1等 见名知意; 如: sum, sort 等 3. 类型及定义 在C中用变量前一定先定义, 编译系统对不同类型变量分配 不同数量的内存单元, 存放其值; 系统对不同类型变量进行 不同操作
变量类型定义 字节数范围 整型 int a b 32768--32767 短整型 short x,y 32768--32767 无符号整型 unsigned int a,2 0-65535 无符号短整型 unsigned short bl20-65535 长整型 long l; 2147483648--2147483647 无符号长整型 unsigned long d 0-4294967295 单精度实型 float f 434e-38~3438(7位) 双精度实型 double d; 81.7e-3081.7e308(15位) 长双精度实型 long double ld,1034c-4932~34493219位) 字符型 char cl, C2, 0--255 带符号字符型| signed char c3 128--127
8 变量类型 定义 字节数 范围 整型 int a,b; 2 -32768---32767 短整型 short x,y; 2 -32768--32767 无符号整型 unsigned int a; 2 0--65535 无符号短整型 unsigned short b; 2 0--65535 长整型 long l; 4 -2147483648--2147483647 无符号长整型 unsigned long d; 4 0--4294967295 单精度实型 float f; 4 3.4e-38 ~ 3.4e38(7位) 双精度实型 double d; 8 1.7e-308 ~ 1.7e308(15位) 长双精度实型 long double ld; 10 3.4e-4932~3.4e4932(19位) 字符型 char c1,c2; 1 0--255 带符号字符型 signed char c3; 1 -128--127
三运算符及其表达式 1.算术运算符及其表达式 (1)算术运算符:+,-,*,/,% 两个操作数均为整型,其结果为整型 / 有一个操作数为实型,其结果为双精度实型 %(求余):两个操作数必为整型,其结果为余数 main o f int a, b; float c scanf(“%d,%d,%f”,&a,&b,&e); printf(a+b=%dⅦn”,a+b); printf(“a-b=%dⅧn”,a-b); printf(“a/c=%f\n”,a/e); 注意:如果要输出“% printf(“a%%c=%dⅦn”,a%(int)c); 号,则在其前加“%”号
9 三 运算符及其表达式 1. 算术运算符及其表达式 (1) 算术运算符: +, - , * , / , % 两个操作数均为整型, 其结果为整型 有一个操作数为实型, 其结果为双精度实型 % (求余): 两个操作数必为整型, 其结果为余数 main ( ) { int a,b; float c; scanf (“ %d, %d, %f ”, &a, &b, &c); printf (“ a+b=%d \n ”, a+b); printf (“ a-b=%d \n ”, a-b); printf (“ a/c=%f \n ”, a/c); printf (“ a%%c=%d \n ”, a%(int) c); } 注意:如果要输出“%” 号, 则在其前加“%” 号 /:
(2)算术表达式-用算术运算符将可操作对象连接起来 算式 例:a,100,a+100,a+3/2.0.均是算术表达式 优先级3+2*5先“*”后“+”其结果为:13; 先“+”后“*”其结果为:25;同一算式得出两个 结果这就要规定优先级, C中规定算术运算符优先级: ()-改变优先级如:(3+2)*5,其结果为:25 ()可嵌套,不可用{}和[] 结合性同一级别有结合性/%+- 左 右左—>右 10
10 (2) 算术表达式-- 用算术运算符将可操作对象连接起来 算式. 例: a ,100 ,a+100 , a+3/2.0….均是算术表达式. 优先级 3+2*5 先 “*” 后 “+” 其结果为: 13; 先 “+” 后 “*” 其结果为: 25;同一算式得出两个 结果,这就要规定优先级, C中规定算术运算符 优先级 : ( )--改变优先级 如: (3+2)*5 , 其结果为: 25 ( ) 可嵌套,不可用{}和[ ]. 结合性 同一级别有结合性 * / % + - 左——>右 左——>右