03数据类型、运算符与表达式
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运行结果:
x=3.600000,i=3
自增、自减运算符
+ + 自增1 – – 自减1 ❖ ++i(--i)在使用i之前,先使i的值加(减)1 ❖ i++(i--)在使用i之后,使i的值加(减)1
举例
❖ 如: int i = 3; ❖ 若: j= ++i; ❖ 若: j=i++;
则: j=4,i=4(i=i+1;j=i) 则: j=3,i=4(j=i;i=i+1)
\ddd • 表示ASCII码字符 三位八进制
如 \ 101 –– 表示字母A \ x hh 十六进制ASCII 字符 \ x 41–– 表示字母A
举例5
❖ #include <stdio.h> ❖ void main() ❖ { printf(“ ab c\t de\rf\tg\n”); ❖ printf(“h\ti\b\bj k”); ❖}
– 指数形式:对于较大或较小的数,可用指数形 式
– 如:123e3或123E3都表示123×103 ,‘ E ’, ‘e ’ 均可.
• E前必须有数字,后面的指数为整数 • e9,3.5e2.1,e,.e3:非法 • 规范化的指数表示方法
(2)浮点型变量
❖ 浮点型数据在内存中的存放形式:指数
❖ ?整型数据在内存中的存放形式?
❖ 如:10+'a'+1.5–8765.1234 'b‘
❖
——允许的。
❖ 但有一个规则:先转换成同一类型,再计算。
转换规则
转换规则: double float
高
long
unsigned
低
int char, short
图中“ ” 表示必定转换。如'a' +' b',先转换为int。结果为 int。 即使是同一种类型也按“ ”转换。目的:提高精度。
❖ 复合运算符:在等号“=”之前加上其他的运算符。
❖ 如: a+=3; 相当于 a=a+3
❖
x=y+8; 相当于 x=x (y+8)
浮点型变量的分类
字节数
❖ 单精度(float)
4
❖ 双精度(double)
8
❖ 长双精度(long double):16
❖ 定义:
❖ float x,y;
❖ double z;
❖ long double t;
有效数字
7 16 18
3.5 字符型数据
❖ 1、字符常量
❖ 用一对单引号括起来的一个字符。 ❖ 如‘a’ 、‘A’、 ‘?’、 ‘c’、 ‘&’、 ‘z’ 、
❖ 例1: ❖ #define PRICE 30 ❖ #include <stdio.h> ❖ void main ( )
{ int num, total; num=10; total=num*PRICE; printf("total=%d",total); }
2、符号常量
❖ #define PRICE 30 ❖ 符号常量一般大写,区别于变量名。 ❖ 好处:
❖ 1、定义变量的同时赋初值
❖ 如:int a=3;
❖
float f=1.45;
❖
char c=‘y’;
❖ 2、定义变量的同时赋一部分初值
❖ 如:int a,b,c=6;
❖
int a=4,b=4,c=4; 注: 不能写成int a=b=c=4;
3.7 各类数值型数据间的混合运算
❖ C语言允许整型、单精度、双精度及字符数据 之间混合运算
!注意事项
❖ 5、所用到的变量要强制定义——先定义, 后使用。
– 目的: – 未定义的,不作为变量名; – 变量指定一个确定类型,编译时能给它分配
相应存储单元; – 检查运算是否合法,如a%b(a、b为整型变
量)。
3.3 整型数据
❖ 1、整型常量的表示方法 – 整型常量 整型常数 – 十进制整数,如233,-412,0; – 八进制整数,以0开头的数,如0234,045,-023 • 0234=2 × 82 + 3 × 81+4 × 80=15610 – 十六进制数,以“0x”开头的整型数 – 如: 0x122, -0x18
2、整型变量
❖ 1、数据在内存中以二进制补码形式存放的。
– int i; – i=5 ;
整型变量占2个字节
i5
i 0000000000000101
数据存放示意图
数据内存中的实际存放
负数补码的方法:该数的绝对值的二进制形 式,按位取反再加1。
补码
如:-5
5的原码 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
3.2 常量与变量
❖ 1、常量和符号常量
– 常量 在程序运行过程中,其值不能被改变的量。 – 一般的数据显式写法均表示常量,也叫直接常量。 – 如程序中: – 12、0,-3 整型常量 – 4.6、-1.23 实型常量 – 'a’, 'd’ 字符常量
2、符号常量
❖ 用一个标识符代表一个常量 符号常量
C H I N A \0
“a" a \0 但‘a' a 结论: 1、字符串长度=实际字符个数+1,但最后\0不输出.
printf ("Good Morning! ") 2、单个字符的字符串不能赋给字符变量。
例: 若char c; c=‘a’;正确 c= “a”;或c=“CHINA” ;是错误的。
3.6 变量赋初值
强制类型转换运算符
❖ 一般形式:(类型名)(表达式) ❖ 如:(double) a 将a转换为double ❖ (int) (x+y) 将x+y转换为int ❖ (float)(5%3)将5%3转换为float
举 例8
❖ #include <stdio.h> ❖ void main() ❖ {float x ; ❖ int i; ❖ x=3.6; ❖ i=(int)x; ❖ printf(“x=%f,i=%d”,x,i); ❖}
例2
注意!
❖1、一个常数后加 ‘u’,被认 为是unsigned int型,如345u;
❖2. 一个常数后加 ‘l’,或‘L’,被 认为是long int型
❖如345l或567L.
3.4 浮点型数据——实数
❖ (1)、浮点型常量的表示方法
– 十进制小数形式:由数字和小数点组成(必 须有小数点)。如123.456,125. ,.45,0.0
算术表达式 算术运算符的优先级与结合性
❖ 算术表达式: 用算术运算符和括号将运算 对象连接起来、符合C语法规则的式子。
❖ 运算对象: 常量、变量、函数等 ❖ 优先级:( )、 、 /、 %、 +、–
结合性
❖结合性: 自左向右运算,为左结合 性,反之为右结合性。
❖ 如:算术运算符为左结合性; ❖ ++、--、=等为右结合性
❖ 1、大小写字母被认为是不同的字符。如MAX和max, I和i是两个不同的变量名。
❖ 2、变量名一般用小写字母表示,增加可读性。 ❖ 3、一个程序内不得有重复变量名 ❖ 4、需注意标识符长度,视不同系统而定。
– 设允许8个字符。 – 则: stud_ name stud_nam – stud_ namber – 为同一变量名stud_nam 。
C语言的数据类型
❖ 著名计算机科学家沃思提出: – 程序=数据结构+算法
❖ 算法:处理的是数据。 ❖ 数据结构:数据的组织形式。如数组。
数据类型
数据类型
基本类型
构造类型 指针类型
整型 字符型 浮点型 枚举 数组 结构体 共用体
空类型
单精度 双精度
程序设计中,每个要使用的变量都要事先指定它的数据类型!
printf ("%d %d\n", c1, c2);
}
运行结果: a b
97 98
4、字符串常量
❖ 用双引号括起来的字符序列。 ❖ 如:“How do you do”、 “ a”、 “ #553” 、
“ CHINA” ❖ 注:‘a’和“a”是不同的。
字符串存放时,在串结尾有一个字符串结束 标志“\ 0" –– 空字符。 于是“CHINA”在内存中为:
!注 意
❖1、++和--运算法只能用于变量, 不得用于常量和表达式。
–如:5++或(a+b)++:不合 法
❖2、++和--结合性:自右向左; 而算术运算符自左向右。
3.9 赋值运算符和赋值表达式
❖ 1、赋值运算符 –符号:=,作用:将一个数据 或表达式赋给变量。 –如a=3,将3赋给变量a。
2、复合的赋值运算符
❖ 图中“” : 表示低、 高型数据运算时, 均先转换为高型。
❖ 例: 10+' a'+1.5 -88.23*’a’
3.8 算术运算符和算术表达式
❖ 1、C语言有丰富的运算符。 ❖ 1)、算术运算符 +, –, , /, % ❖ 2)、赋值运算符 = ❖ 3)、强制类型转换运算符 ((类型)) ❖ 等等
– 含义清楚,“见名知意”。 – 能做到“一改全改”
❖ 例如 π=3.14159267 ❖ 可以定义为
❖ #define PI 3.14159267
3、变量
❖ 变量:其值可以改变的量。分为变量名和变量值
变量名:实际上是一个符号地址,
编译时由系统给它分配一个内存地
a
址。
3
变量名 变量值
存储单元
4、标识符
整型变量的定义
❖ 整型变量定义分别如下:
– 基本整型: – int a, b, c;
短整型: short int 或 short a, b, c;
长整型: long int 或 long a, b, c;
无符号型 unsigned a, b, c; unsigned short a, b, c; unsigned long a, b, c;
‘L’ ❖ 此外,以“ \”开头字符序列,为特殊字符常
量。 –––转义字符(控制字符)。
如 \ n ––换行, \ r –– 回车
其它如下表: 字符形式 \n \t \b \r \f \\ \' \ddd \xhh
功能 换行 横向跳格(即跳到下一个输出区) 退格 回车不换行 走纸换页 反斜杠字符“ \” 单引号(撇号)字符 1到3位8进制数所代表的字符 1到2位16进制数所代表的字符
2 算术运算符和算术表达式
❖ 基本算术运算符:
– + 加法或正值 3+6, +3 – – 减法或负值 6– 4, –5 – 乘法 38 – / 除法 8 / 5 – % 求余 7 % 4 的值为3
!注意
❖两个整型数据相除 (结果为 整数,一般向零靠拢)。 –5/ 3 –1
❖+、-、*、/ 中,有一个 实数, 则结果为double型,注意 int / int 会出现数据丢失。
第3章 数据类型、 运算符与表达式
3.1 C语言的数据类型
❖ 数据类型是指数据的内在表现形式。通俗地说:数据 在加工计算中的特征称为数据的类型。
– 例如: 成绩可进行算术运算, 具有一般数值 的特点, C语言中称为数值型, 可分为实型和 整型。名字这种数据具有文字的特征, 在C 语言称为字符型数据。
❖ 标识符:用来标识变量名、数组名、函 数名等有效字符序列。它只能由字母、 数字、下划线组成且由字母或下划线开 头的字符串。
❖ 例如: sum,average,_total,Class,_1_2_3,BASIC : 为合法的变量名 M.D.,123 9,#12,3rr,a>b :为非法的变量 名
!注意事项
取反
加1 -5的补码
1111111111111010 1111111111111011
最高位为符号位:0为正,1为负
整型变量的分类
❖ 1、分类 – 基本整型,用int表示,2个字节 – 短整型,用“short int”或 “short”定义,2个 字节 – 长整型,用“long int ” 或 “long ”定义,4个 字节 – 前面可以加上signed和unsigned构成6种整型 变量
运行结果: 屏幕上看的结果: f gde h jk
打印机得到的结果: fab c gde h jik
2、字符变量
❖ 只能用来存放一个字符常量。 ❖ 在内存中占1个字节 ❖ 定义形式如下: ❖ char a,b,c; ❖ a=‘a’; ❖ b=‘5’; ❖ c=b;
3、字符数据的存储形式
❖ 字符常量存在字符变量中。存放的是其ASCII 码,即ASCII码的二进制形式。不是字符本身。
❖ 如 c1=‘a’ ASCII码为97 ❖ c2=‘b’ ASCII码为98
c1 c2 97 98
c1
c2
01100001 01100010
举例 6
向字符变量赋以整数
❖ #include <stdio.h> ❖ void main ( )
{ char c1, c2;
c1=97;
c2=98;
printf ("%c %c\n", c1, c2);
x=3.600000,i=3
自增、自减运算符
+ + 自增1 – – 自减1 ❖ ++i(--i)在使用i之前,先使i的值加(减)1 ❖ i++(i--)在使用i之后,使i的值加(减)1
举例
❖ 如: int i = 3; ❖ 若: j= ++i; ❖ 若: j=i++;
则: j=4,i=4(i=i+1;j=i) 则: j=3,i=4(j=i;i=i+1)
\ddd • 表示ASCII码字符 三位八进制
如 \ 101 –– 表示字母A \ x hh 十六进制ASCII 字符 \ x 41–– 表示字母A
举例5
❖ #include <stdio.h> ❖ void main() ❖ { printf(“ ab c\t de\rf\tg\n”); ❖ printf(“h\ti\b\bj k”); ❖}
– 指数形式:对于较大或较小的数,可用指数形 式
– 如:123e3或123E3都表示123×103 ,‘ E ’, ‘e ’ 均可.
• E前必须有数字,后面的指数为整数 • e9,3.5e2.1,e,.e3:非法 • 规范化的指数表示方法
(2)浮点型变量
❖ 浮点型数据在内存中的存放形式:指数
❖ ?整型数据在内存中的存放形式?
❖ 如:10+'a'+1.5–8765.1234 'b‘
❖
——允许的。
❖ 但有一个规则:先转换成同一类型,再计算。
转换规则
转换规则: double float
高
long
unsigned
低
int char, short
图中“ ” 表示必定转换。如'a' +' b',先转换为int。结果为 int。 即使是同一种类型也按“ ”转换。目的:提高精度。
❖ 复合运算符:在等号“=”之前加上其他的运算符。
❖ 如: a+=3; 相当于 a=a+3
❖
x=y+8; 相当于 x=x (y+8)
浮点型变量的分类
字节数
❖ 单精度(float)
4
❖ 双精度(double)
8
❖ 长双精度(long double):16
❖ 定义:
❖ float x,y;
❖ double z;
❖ long double t;
有效数字
7 16 18
3.5 字符型数据
❖ 1、字符常量
❖ 用一对单引号括起来的一个字符。 ❖ 如‘a’ 、‘A’、 ‘?’、 ‘c’、 ‘&’、 ‘z’ 、
❖ 例1: ❖ #define PRICE 30 ❖ #include <stdio.h> ❖ void main ( )
{ int num, total; num=10; total=num*PRICE; printf("total=%d",total); }
2、符号常量
❖ #define PRICE 30 ❖ 符号常量一般大写,区别于变量名。 ❖ 好处:
❖ 1、定义变量的同时赋初值
❖ 如:int a=3;
❖
float f=1.45;
❖
char c=‘y’;
❖ 2、定义变量的同时赋一部分初值
❖ 如:int a,b,c=6;
❖
int a=4,b=4,c=4; 注: 不能写成int a=b=c=4;
3.7 各类数值型数据间的混合运算
❖ C语言允许整型、单精度、双精度及字符数据 之间混合运算
!注意事项
❖ 5、所用到的变量要强制定义——先定义, 后使用。
– 目的: – 未定义的,不作为变量名; – 变量指定一个确定类型,编译时能给它分配
相应存储单元; – 检查运算是否合法,如a%b(a、b为整型变
量)。
3.3 整型数据
❖ 1、整型常量的表示方法 – 整型常量 整型常数 – 十进制整数,如233,-412,0; – 八进制整数,以0开头的数,如0234,045,-023 • 0234=2 × 82 + 3 × 81+4 × 80=15610 – 十六进制数,以“0x”开头的整型数 – 如: 0x122, -0x18
2、整型变量
❖ 1、数据在内存中以二进制补码形式存放的。
– int i; – i=5 ;
整型变量占2个字节
i5
i 0000000000000101
数据存放示意图
数据内存中的实际存放
负数补码的方法:该数的绝对值的二进制形 式,按位取反再加1。
补码
如:-5
5的原码 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
3.2 常量与变量
❖ 1、常量和符号常量
– 常量 在程序运行过程中,其值不能被改变的量。 – 一般的数据显式写法均表示常量,也叫直接常量。 – 如程序中: – 12、0,-3 整型常量 – 4.6、-1.23 实型常量 – 'a’, 'd’ 字符常量
2、符号常量
❖ 用一个标识符代表一个常量 符号常量
C H I N A \0
“a" a \0 但‘a' a 结论: 1、字符串长度=实际字符个数+1,但最后\0不输出.
printf ("Good Morning! ") 2、单个字符的字符串不能赋给字符变量。
例: 若char c; c=‘a’;正确 c= “a”;或c=“CHINA” ;是错误的。
3.6 变量赋初值
强制类型转换运算符
❖ 一般形式:(类型名)(表达式) ❖ 如:(double) a 将a转换为double ❖ (int) (x+y) 将x+y转换为int ❖ (float)(5%3)将5%3转换为float
举 例8
❖ #include <stdio.h> ❖ void main() ❖ {float x ; ❖ int i; ❖ x=3.6; ❖ i=(int)x; ❖ printf(“x=%f,i=%d”,x,i); ❖}
例2
注意!
❖1、一个常数后加 ‘u’,被认 为是unsigned int型,如345u;
❖2. 一个常数后加 ‘l’,或‘L’,被 认为是long int型
❖如345l或567L.
3.4 浮点型数据——实数
❖ (1)、浮点型常量的表示方法
– 十进制小数形式:由数字和小数点组成(必 须有小数点)。如123.456,125. ,.45,0.0
算术表达式 算术运算符的优先级与结合性
❖ 算术表达式: 用算术运算符和括号将运算 对象连接起来、符合C语法规则的式子。
❖ 运算对象: 常量、变量、函数等 ❖ 优先级:( )、 、 /、 %、 +、–
结合性
❖结合性: 自左向右运算,为左结合 性,反之为右结合性。
❖ 如:算术运算符为左结合性; ❖ ++、--、=等为右结合性
❖ 1、大小写字母被认为是不同的字符。如MAX和max, I和i是两个不同的变量名。
❖ 2、变量名一般用小写字母表示,增加可读性。 ❖ 3、一个程序内不得有重复变量名 ❖ 4、需注意标识符长度,视不同系统而定。
– 设允许8个字符。 – 则: stud_ name stud_nam – stud_ namber – 为同一变量名stud_nam 。
C语言的数据类型
❖ 著名计算机科学家沃思提出: – 程序=数据结构+算法
❖ 算法:处理的是数据。 ❖ 数据结构:数据的组织形式。如数组。
数据类型
数据类型
基本类型
构造类型 指针类型
整型 字符型 浮点型 枚举 数组 结构体 共用体
空类型
单精度 双精度
程序设计中,每个要使用的变量都要事先指定它的数据类型!
printf ("%d %d\n", c1, c2);
}
运行结果: a b
97 98
4、字符串常量
❖ 用双引号括起来的字符序列。 ❖ 如:“How do you do”、 “ a”、 “ #553” 、
“ CHINA” ❖ 注:‘a’和“a”是不同的。
字符串存放时,在串结尾有一个字符串结束 标志“\ 0" –– 空字符。 于是“CHINA”在内存中为:
!注 意
❖1、++和--运算法只能用于变量, 不得用于常量和表达式。
–如:5++或(a+b)++:不合 法
❖2、++和--结合性:自右向左; 而算术运算符自左向右。
3.9 赋值运算符和赋值表达式
❖ 1、赋值运算符 –符号:=,作用:将一个数据 或表达式赋给变量。 –如a=3,将3赋给变量a。
2、复合的赋值运算符
❖ 图中“” : 表示低、 高型数据运算时, 均先转换为高型。
❖ 例: 10+' a'+1.5 -88.23*’a’
3.8 算术运算符和算术表达式
❖ 1、C语言有丰富的运算符。 ❖ 1)、算术运算符 +, –, , /, % ❖ 2)、赋值运算符 = ❖ 3)、强制类型转换运算符 ((类型)) ❖ 等等
– 含义清楚,“见名知意”。 – 能做到“一改全改”
❖ 例如 π=3.14159267 ❖ 可以定义为
❖ #define PI 3.14159267
3、变量
❖ 变量:其值可以改变的量。分为变量名和变量值
变量名:实际上是一个符号地址,
编译时由系统给它分配一个内存地
a
址。
3
变量名 变量值
存储单元
4、标识符
整型变量的定义
❖ 整型变量定义分别如下:
– 基本整型: – int a, b, c;
短整型: short int 或 short a, b, c;
长整型: long int 或 long a, b, c;
无符号型 unsigned a, b, c; unsigned short a, b, c; unsigned long a, b, c;
‘L’ ❖ 此外,以“ \”开头字符序列,为特殊字符常
量。 –––转义字符(控制字符)。
如 \ n ––换行, \ r –– 回车
其它如下表: 字符形式 \n \t \b \r \f \\ \' \ddd \xhh
功能 换行 横向跳格(即跳到下一个输出区) 退格 回车不换行 走纸换页 反斜杠字符“ \” 单引号(撇号)字符 1到3位8进制数所代表的字符 1到2位16进制数所代表的字符
2 算术运算符和算术表达式
❖ 基本算术运算符:
– + 加法或正值 3+6, +3 – – 减法或负值 6– 4, –5 – 乘法 38 – / 除法 8 / 5 – % 求余 7 % 4 的值为3
!注意
❖两个整型数据相除 (结果为 整数,一般向零靠拢)。 –5/ 3 –1
❖+、-、*、/ 中,有一个 实数, 则结果为double型,注意 int / int 会出现数据丢失。
第3章 数据类型、 运算符与表达式
3.1 C语言的数据类型
❖ 数据类型是指数据的内在表现形式。通俗地说:数据 在加工计算中的特征称为数据的类型。
– 例如: 成绩可进行算术运算, 具有一般数值 的特点, C语言中称为数值型, 可分为实型和 整型。名字这种数据具有文字的特征, 在C 语言称为字符型数据。
❖ 标识符:用来标识变量名、数组名、函 数名等有效字符序列。它只能由字母、 数字、下划线组成且由字母或下划线开 头的字符串。
❖ 例如: sum,average,_total,Class,_1_2_3,BASIC : 为合法的变量名 M.D.,123 9,#12,3rr,a>b :为非法的变量 名
!注意事项
取反
加1 -5的补码
1111111111111010 1111111111111011
最高位为符号位:0为正,1为负
整型变量的分类
❖ 1、分类 – 基本整型,用int表示,2个字节 – 短整型,用“short int”或 “short”定义,2个 字节 – 长整型,用“long int ” 或 “long ”定义,4个 字节 – 前面可以加上signed和unsigned构成6种整型 变量
运行结果: 屏幕上看的结果: f gde h jk
打印机得到的结果: fab c gde h jik
2、字符变量
❖ 只能用来存放一个字符常量。 ❖ 在内存中占1个字节 ❖ 定义形式如下: ❖ char a,b,c; ❖ a=‘a’; ❖ b=‘5’; ❖ c=b;
3、字符数据的存储形式
❖ 字符常量存在字符变量中。存放的是其ASCII 码,即ASCII码的二进制形式。不是字符本身。
❖ 如 c1=‘a’ ASCII码为97 ❖ c2=‘b’ ASCII码为98
c1 c2 97 98
c1
c2
01100001 01100010
举例 6
向字符变量赋以整数
❖ #include <stdio.h> ❖ void main ( )
{ char c1, c2;
c1=97;
c2=98;
printf ("%c %c\n", c1, c2);