第二章 C语言的数据类型和运算
第2章 c语言基本数据类型、运算符和表达式
1000000000000101
1111111111111010
1111111111111011
整型数据所分配的字节数及数的表示范围(16位系统)
整型数据类型
[signed ]int unsigned [int] [signed] short [int] unsigned short [int] [signed ]long [int] unsigned long [int]
制和十六进制只是整型数值的三种表现形式而已。 整型常量类型的确定:根据值大小默认类型。 整型常量后面加后缀1或L,则认为是long int型。 无符号数也可以用后缀表示,整型常数的无符号数的后缀为“U”或“u”。 注意:在程序中是根据前缀来区分各种进制数的。因此在书写时不要把前缀弄错造
成结果不正确。
缺省形式的 整型数据类型
int unsigned short int unsigned short int long int unsigned long
字节数
取值范围
2
-32768~32767(-215~215-1)
2
0~65535
2
-32768~32767(-215~215-1)
2
0~65535(0~216-1)
3.字符型常量
字符常量是用单引号括起来的一个字符。它有二种形式:可视字符常量、转义字符常量。 (1)可视字符常量:单引号括起来的单个可视字符。
大多数字符常量都可以通过加单引号的方式表示,但有些特殊字符,如单引号本身和有些不 可见的特殊字符,就无法通过这种方法表示,为了解决这一问题,C语言引入了“转义字符”。
二、C语言数据类型和运算符号
意义: 意义:可提高执行效率.
4, 3
基本运算符使用注意事项
算术运算符和算术表达式 注意以下几点: ⑴ 两个整数相除结果为整数,如5/3的结果为1.如果参加 两个整数相除结果为整数,如5/3的结果为1 运算的两个数中有一个数为实数,则结果是double型. 运算的两个数中有一个数为实数,则结果是double型. ⑵ 模运算符%,又称求余运算符,要求%两侧均为整型数据, 模运算符%,又称求余运算符,要求% 如7%4的值为3;而且余数的值符号与被除数一致,如- 7%4的值为3 7%- 的值为-3 7%-4的值为-3. ⑶ 运算符"+ +"是操作数加1,而"--"是操作数减1, 运算符" +"是操作数加1,而"--"是操作数减1 只适用于变量,不能用于常量或表达式.
21/25 21/25
举例:写出下列表达式的值 若有定义:int a=3, b=2, c=1; char ch1='a'; 1) b+c!=a 2) ch1<'b' 3) a%2==0 4) (a>b)>(b<c) 5) a>b>b<1 6) a>b==c 7) f=a>b>c
22/25 22/25
基本运算符使用注意事项
基本算术运算符: + 加 / 取正 (双目运算符 / 单目运算符) - 减 / 取负 (双目运算符 / 单目运算符) * 乘 (双目运算符) / 除 (双目运算符) % 整除取余 (双目运算符) 注意: 1)两整数相除结果仍为整数 如:5/2 2 -5/3 -1 1/2 0 要依实际应用情况加以利用或避免. 2)求余运算要求两运算元素均为整型,余数仍 为整型; 如:int a, b; a=11%3; /*2 a*/ b=5%a; /*1 b*/ 若有: a=11.0%3; 编译时将视为语法错.
C语言教程课件第二章 数据类型、运算符和表达式
例 整型变量的定义与使用
#include <stdio.h> void main() { int a,b,c,d; /*指定a、b、c、d为整型变量*/ unsigned u; /*指定u为无符号整型变量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf("a+u=%d,b+u=%d\n",c,d); }
例 向字符变量赋以整数。 • 运行结果: #include <stdio.h> a b void main() 97 98 { char c1,c2; c1=97; c2=98; printf("%c %c\n",c1,c2); printf("%d %d\n",c1,c2); }
• 说明:在第4和第5行中,将整数97和98分别赋给c1和c2,它 的作用相当于以下两个赋值语句: c1='a';c2='b'; 因为'a'和'b'的ASCII码为97和98
• 字符型变量用来存放字符常量,注意只能放一个字符。 • 字符变量的定义形式如下:char c1,c2; • 在本函数中可以用下面语句对c1,c2赋值: c1='a';c2='b'; • 一个字符变量在内存中占一个字节; • 将一个字符常量放到一个字符变量中,是将该字符的 相应的ASCII代码放到存储单元中,这样使字符型数据 和整型数据之间可以通用。一个字符数据既可以以字 符形式输出,也可以以整数形式输出。
运行结果: total=300 例2.1 符号常量的使用 #define PRICE 30 #include <stdio.h> void main ( ) 说明:如再用赋值语句给PRICE赋值是错的 { PRICE=40;/*错误,不能给符号常量赋值*/ int num, total; num=10; total=num * PRICE; printf(″total=%d\n ″,total); } 说明: 程序中用#define命令行定义PRICE代表常量30,此后凡在 本文件中出现的PRICE都代表30,可以和常量一样进行运算
二章C语言基本数据类型及运算
标识符
标识符是C语言编程时用来标志识别的符号。 ANSI C规定:由字母或下划线开头,后跟字母,数字 或下划线任意组合的字符序列。
正确:count,test123,high_balance,PI 不正确:1count,hi!three,high..balance,a+b
来表示字符串的结束。
如“a”在内存中的形式:
符 号 常 量 (一)
符号常量在C语言中称为宏定义。宏定义是C语言提供的编译 预处理功能之一。 ·不带参的宏定义 #define用来定义一个标识符和一个字符串。 这个标识符叫宏名,替换过程叫做宏替换或宏展开。
·形式:#define 宏名 字符串
例:宏定义的使用 #define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R main() { printf(“L=%f\n S=%f\n”,L,S); }
果时,结果为整数(余数被截掉)。
(2)%仅用于整型运算。
(3)赋值运算符是将右边表达式的值赋给左边的变量。 合法:x=x+1; 非法:x+1=x;
(4)++,--仅用于整型变量,指针变量。
(5)+,-,*,/,%,可与赋值号组成复合赋值运算符 +=,-=,*=。/=,%=。
例如:a=a+ba+=b; a=a*ba*=b;
例如:#define PI 3.14159; area=PI*r*r;
(4)C程序中习惯用大写字母作为宏名。 (5)宏定义用宏命令#undef 宏名 来终止其作用域。
例如:#define PI 3.14159 main() {…} #undef PI f1()
C语言程序设计 第2章 数据类型
2.2常量和变量 变量名与变量值的关系:
2.2常量和变量
变量的使用:先定义后使用
变量定义的一般形式:
数据类型 变量名1,变量名2,…,变量名n;
2.2常量和变量
➢ 凡未被事先定义的,系统不把它认作变量名,这就 能保证程序中变量名使用的正确
例:varname,在使用的时候误写成vaname
➢ 在定义变量时要指定变量的类型,在编译时就能为 变量分配相应的存储单元
5
2.2常量和变量
甘草 三七 干姜 葛根
枸杞 人参 陈皮 地黄
山药 当归 谷芽 黄连
贴上标签 加以区分
用标识符给变量起名字
2.2常量和变量 变量命名规则
➢ 只能由字母(a~z,A~Z)、数字(0~9)和下划线(_)构 成
➢ 第一个字符不能为数字 ➢ 不能与关键字同名
例:a9,_a, A_num √ 9a, a*num,int ×
控制语句:控制语句用于控制程序的流程。 C语言提供三类控制语句: ➢ 选择语句 ➢ 循环语句 ➢ 转移语句。 控制语句会在第三章和第四章详细介绍。
2.7 表达式与语句
复合语句: 复合语句由一对大括号括起来的一 条或多条语句组成。 例:{
turnOn(0,3); turnOn(0,4); turnOn(0,5); turnOn(1,4); }
2.7 表达式与语句
表达式语句:表达式末尾加上“;”就构成一条 表达式语句。 例:
s = 3.14 * r * r; 就是一条赋值表达式语句。表达式语句最后的 分号是语句中必不可少的一部分。
2.7 表达式与语句
函数调用语句:函数调用语句由函数调用加分 号构成。 例:
turnOn(1,1);
C语言第02章 数据类型、运算符与表达式
回到 首页
运算符和结合性 P325,附录3
2.8 算术运算符和算术表达式
3、自增、自减运算符
自增运算符++和自减运算符--均是单目运算符, 功能是使变量的值增1或减1。其优先级高于所有 双目运算符,结合性为右结合性(自右至左)。
回到 首页
例如:++i或i++ 等价于i=i+1; --i或i-- 等价于i=i-1;
2.7数值型数据之间的混合运算
回到 首页
1、整型、实型、字符型数据之间可以混合运 算
整型(包括int,short,long)和实型(包括float,double)数据可 以混合运算,另外字符型数据和整型数据可以通用,因此,整 型、实型、字符型数据之间可以混合运算。 例如,表达式10+'a'+1.5-8765.1234*'b'是合法的。
2.9赋值运算符和赋值表达式
1、赋值运算符和赋值表达式
赋值运算符:“=”为双目运算符,右结合性。 赋值表达式:由赋值运算符组成的表达式称为赋值表达 式。 赋值表达式一般形式: 变量 赋值符 表达式 如 a=5 类型转换:将高精度的数据类型赋值给低精度的数据类 型,可能出错。
回到 首页
2.9赋值运算符和赋值表达式
2.8 算术运算符和算术表达式
3、自增、自减运算符
回到 首页
y=++x;等价于先计算x=x+1(结果x=6),再执行y=x,结果y=6。 y=x++;等价于先执行y=x,再计算x=x+1,结果y=5,x=6。 y=x++*x++;结果y=25,x=7。x++为后缀形式,先取x的值进行“*” 运算,再进行两次x++。 y=++x*++x;结果y=49,x=7。
C语言的数据和运算.
第2章 C语言的数据和运算[目的要求]1. 了解C语言的数据类型;2. 掌握常量与变量的概念;3. 掌握整型、实型、字符型数据的常量和变量的引用方法;4. 掌握简单的输入和输出;5. 掌握变量赋初值的方法;6. 掌握各类数据的混合运算;7. 掌握算术、关系、逻辑运算符和算术、关系、逻辑表达式;8. 掌握赋值运算符和赋值表达式、逗号运算符和逗号表达式。
[基本内容]1. C语言的数据类型;2. 常量与变量;3. 简单的输入(scanf())和输出(printf());4. 运算符和表达式。
[重点难点]1.重点:数据类型、表达式。
2.难点:变量、表达式。
[课时安排]4学时。
2.1 程序设计概述一个程序应包括对数据的描述和对数据处理的描述。
1.对数据的描述,即数据结构。
2.对数据处理的描述,即电脑算法。
算法是为解决一个问题而采取的方法和步骤,是程序的灵魂。
为此,著名电脑科学家沃思〔Nikiklaus Wirth〕提出一个公式:数据结构 + 算法 = 程序2.2 C语言的数据类型C语言提供的数据结构,是以数据类型形式出现的。
具体分类如下:1. 基本类型分为整型、实型〔又称浮点型〕、字符型和枚举型四种。
2. 构造类型分为数组类型、结构类型和共用类型三种。
3. 指针类型。
4. 空类型C 语言中的数据,有常量和变量之分,它们分别属于上述这些类型。
本章将介绍基本类型中的整型、实型和字符型三种数据。
2.3 常量和变量2.3.1 常量1. 常量的概念在程序运行过程中,其值不能被改变的量称为常量。
2. 常量的分类〔1〕整型常量〔2〕实型常量〔3〕字符常量。
〔4〕符号常量。
2.3.2 变量1. 变量的概念在程序运行过程中,其值可以被改变的量称为变量。
2. 变量的两个要素〔1〕变量名。
每个变量都必须有一个名字──变量名,变量命名遵循标识符命名规则。
〔2〕变量值。
在程序运行过程中,变量值存储在内存中。
在程序中,通过变量名来引用变量的值。
第2章 C语言,数据类型、运算符和表达式
(C语言运算符总表见教材P26或P325附录C) return 31
C语言程序设计
算术运算符
+ - * / % 功能: 操作数要求: 结合性: 优先级: 注意事项: 算术运算 两个操作数 (当-用作负号时除外) 自左至右(当-用作负号时除外) -(负号) —— * / % —— + - (由高→低) ① 两个整数相除,结果为整数! 例: 3/2=1 ② %要求两个操作数均为整型数据! 且余数与被除数同号!
说明: ① 字符变量中存放的是字符ASCII码值! ② char与int数据间可进行算术运算!
char choice = 'A';
return24
C语言程序设计
字符串常量
字符常量是用双引号括起来的字符序列. 例如: "hello!" , "0" (1) 字符串常量在内存中的存储 (2) 字符串常量.vs.字符常量
整型
浮点型 字符型 说明:
① 数据类型所占字节数随机器硬件不同而不同! ② 可用sizeof(数据类型说明)来计算某一数据类型占内存的字节数! return
C语言程序设计 next part
2. 常量与变量
标识符命名 常量 变量
go go go
6
C语言程序设计
标识符命名
例: 判断下列标识符号合法性
next
ห้องสมุดไป่ตู้
20
C语言程序设计
字符常量
转义字符是用反斜杠\后面跟一个字符或一个八进制或十 六进制数表示的ASCⅡ码值。例如: '\n', '\101' (1) C语言中常用的转义字符 (2) 转义字符使用实例
第二章 C语言的基本数据类型及运算
解决的方法是: 使用反码或补码的表示方法(按前述
表示的编码称为原码),即能将减法一律 转换为加法。
2020/12/11
原码、反码和补码
11
正数:原码、反码、补码相同
– 符号位为0,数值为对应的二进制数。 +109
[01101101]原 = [01101101]反 = [01101101]补
• 指数只能是整数,而尾数则可以是整数也可以是 小数 ,无论指数或尾数均不能省略 例如:1e、E.5、E-3 非法
• 实型常量的类型:默认为double型,后面加F (或f),则强调表示该数是float类型 例如:3.5f、1e2F
2020/12/11
3. 字符型常量
22
可视字符常量 – 单引号括起来的单个可视字符 例如:'a'、'A' 、'+' 、'3'、' ' 等
例如: #define LEN 2.5
定义符号常量
main( )
{ float a,b;
a= 2*3.14 *LEN;
使用符号常量
b=3.14*LEN*LEN;
printf("a=%f,b=%f\n",a,b);
}
编译前系统进行替换
2020/12/11
5. 符号常量
25
main( )
{ float a,b;
负数:
– 原码符号位为1,数值为绝对值的二进制
数。
-109 [11101101]原
– 反码符号位为1,数值为绝对值的二进制
数各位变反。 -109 [10010010]反
– 补码符号位为1,数值为绝对值的二进制
C语言 数据类型、运算符与表达式
C语言A
整型数据的溢出
#include <stdio.h> void main() { int a,b; a=32767; b=a+1; printf(“%d,%d\n”,a,b); } 运行结果:32767,-32768
说明:数值是以补码表 示的。一个整型变量 只能容纳-32768~ 32767范围内的数, 无法表示大于32767 或小于-32768的数。 遇此情况就发生‚溢 出‛。
运行结果:total=300
量赋值。 */
C语言A
a
变量名 变量值 存储单元
二、变量
3
变量代表内存中具有特定属性的一个存储单
元,它用来存放数据,这就是变量的值,在 程序运行期间,这些值是可以改变的。 变量名实际上是一个以一个名字对应代表一 个地址,在对程序编译连接时由编译系统给 每一个变量名分配对应的内存地址。从变量 中取值,实际上是通过变量名找到相应的内 存地址,从该存储单元中读取数据。
C语言A
标识符:用来标识变量名、符号常量名、函
数名、数组名、类型名、文件名的有效字符 序列。
符号常量:在C语言中,可以用一个标识符
来表示一个常量,称之为符号常量。
符号常量在使用之前必须先定义,其一
般形式为:
#define 标识符 常量
C语言A
习惯上符号常量的标识符用大写字母,
变量标识符用小写字母,以示区别。 符号常量与变量不同,它的值在其作用 域内不能改变,也不能再被赋值。 使用符号常量的好处是:
例如:求-10的补码。 15
10的原码: 取反:
0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
C语言第2章 数据类型及运算符
C/C++程序设计第2 章数据类型及表达式计算机学院C/C++程序设计课程组C/C++程序设计第2章主要内容本章主要介绍:基本数据类型和存储类型的说明方法,以及基本运算符的运算规则和表达式的构成方法,为后续章节的学习奠定一个基础。
C/C++程序设计2.1 C 语言的数据类型使用高级语言编写程序,主要工作有两项:一是描述数据,二是描述数据加工的方法。
数据类型图 2.1C 语言的数据类型基本类型整型实型字符型带符号长整型(简称长整型)带符号整型无符号整型无符号整型无符号短整型无符号长整型单精度型双精度型空类型构造类型指针类型枚举类型数组类型结构体类型共用体类型C/C++程序设计2.2 常量常量是程序运行过程中其值不发生变化的数据。
2.2.1 整型常量表2.1 整型数据的表示方式2.2.2 实型常量3.14、.9999、-3.14159、834.、–0.666 、6.89E-52.2.3 字符常量’x’,’a’,’A’,’b’,’$’,’#’ ,printf("\tab\rcd\n\’ef\\g");2.2.4 符号常量#define 符号常量字符串#define PI 3.14159C/C++程序设计【例2.1】求一个圆柱体体积,用符号常量代替π。
#include <stdio.h>#define PI 3.14159 /*定义PI为符号常量*/void main(){float r,h,v;scanf("%f,%f",&r,&h);v=PI*r*r*h; /* PI相当于3.14159,参与运算*/printf("Volume=%f",v);}运行时输入:3,2↙运行结果为: Volume=56.548618C/C++程序设计2.2.5 字符串常量"\tab\rcd\n\’ef\\g“"I am a student" 、"x"、""注意:’\0’和’0’不同,’\0’是编码为0的字符,而’0’则是数字0,其编码为48。
C语言程序设计第2章-1数据类型、运算符和表达式
2、 C 语言的运算符的优先级与结合性
3、表达式:由操作数和运算符组成的序列。
5
精品文档
⒉ 真值: 带符号位的机器数对应的数值称为机器数的真值。 (10100011)2= -35
⒊ 无符号数:当计算机字长的所有二进位都用来表示(biǎoshì)数值时,称 为无符号数。
2.2.2 原码、反码和补码
⒈ 原码
整数 X 的原码指:其数符位 0 表示正,1 表示负,其数值部分
就是 X 的绝对值的二进制表示。
2.1 常用 的进位制 (chánɡ yònɡ)
2.1.1 二进制、八进制和十六进制(shíliùjìn zhì)数
3
精品文档
2.1.2十、二进制、八进制和十六进制数之间的换算
⒈ 二、八、十六进制数 → 十进制数的换算采用按权展开法。
(2AB.F)16 = 2χ162+10χ161+11χ160+15χ16-1 = 683.93 ⒉ 十进制数 → 二进制数的换算整数部分(bù fen)采用除以二取余直到商
19
精品文档
2.5.1 算术运算符与算术表达式
⒈ 基本的算术运算符:
14
精品文档
3.字符常量
字符常量是用单撇号括起来的单个字符或转义字符,
如: ‘a’, ‘9’, ‘&’, ‘\n’, ‘\’’, ‘\101’。
字符常量的值为该字符的ASCII码值,如 ‘a’值为97, ‘\n’
C语言程序的基本数据类型及其运算
转换规则:
double 高 long unsigned 低 int char,short 1、纵向向上的箭头表示不同类型的 转换方向(由低类型转化为高类 型),不表示转换所经的步骤。 2、横向向左的箭头表示必须的转换。
float
说明: 必定的转换 运算对象类型 不同时转换
思考:根据已知变量定义及赋值语句,计算以下 表达式的值,并说明每一步所得结果的数据类型。 int i; float f; double d; long e; …… i=2; f=2.5; d=3.9; e=3; ……
例:已知三角形的边长a、b、c,求三角形周长的一半。
#include <stdio.h> void main() { float a,b,c,s; a=3;b=4;c=5; s=1/2 * (a+b+c); printf("s=%8.2f",s); } 改为:1.0/2 (1/2.0) 或 (float)1/2 (1/(float)2)
char c1,c2; // 定义字符型变量 int x,y,z; // 定义整型变量 double volume; // 定义双精度型变量 float sum,average; // 定义实型变量 unsigned long distance;//定义无符号长整型变量
2.2.3 变量的初始化
变量初始化:给变量赋初值的的语句,称为变量初始化。 要求对所有用到的变量,必须先定义、后使用。 变量赋初值有两种方式: 1、在定义变量的同时赋初值(也叫变量初始化)。 (出现在函数体的声明部分) 格式:数据类型 变量名[=初值][,变量名2[=初值2]……]; 2、通过一个赋值语句给变量赋初值。 (出现在函数体的执行部分) 格式:变量名 = 初值; 两种方式的效果是等价的。 例如:int a,b=3; int a, b; b=3; 注意:没有赋初值的变量并不意味着该变量中没有数值, 而只表明该变量中尚未存放特定值。
C语言教程第2章数据类型、运算符与表达式
常量只能在定义时赋值,然后不能再改变 其值 常数、 const常量、宏常量和枚举常量, 都可以用来表示一个永远不会改变的数
前者不建议直接使用,而用后三者代替
C语言大学实用教程
2.5 变 量
变量是在程序执行过程中可以改变、可以赋 值的量。
在程序中每一个变量都有一个名子即变量名, 程序对该变量访问(存入、读取)都是通过变 量名进行的。
运行结果: 1234567936.000000
1234567890.000000
}
C语言大学实用教程
2.6 常用运算符及表达式
算术运算符
+,-,*,/,%
加、减、乘、除、求余运算 四则混合运算中,先算乘除,后算加减, 按从左向右的顺序计算,左结合
#include <math.h>
常用的标准数学函数
C语言大学实用教程
#include <stdio.h> /*函数功能:计算两个整数相加之和 入口参数:整型数据a和b 返回值: 整型数a和b之和 */ int Add(int a, int b) { return (a + b); }
2.1 一个简单的C程序例子
/*主函数*/ ) { int x, y, sum = 0;
022、-037 010和10大小不一样 因为八进制并不常用,所以此种表示法比较少见
以“0x”或者“0X”开始的整型常数是十六进 制
A~F和a~f用来表示十进制的10~15
十六进制的形式比较常用,尤其在进行位一级的 控制的时候 0x12、-0x1F, -0x1f
C语言大学实用教程
2.4 常量
字符常量
C语言知识点:第2章 数据类型、运算符与表达式
主讲教师:杨剑
第 2 章:数据类型、运算符与表达式
1. 本章目标:
理解变量和常量的含义 熟悉基本数据类型 - int、char、float 和 double 使用算术运算符 理解类型转换 使用关系和逻辑运算符
2. 内存如何存放数据
电脑使用内存来记忆计算时所使用的数据 内存如何存储数据? 内存像旅馆.数据各式各样,要先根据数据的需求(即类型)为它申请一块合适的空
23. 复合赋值表达式
24. 赋值表达式和逗号运算符
赋值表达式 a=b=c=5;(从右向左计算) a +=a-=a*a
逗号运算符和逗号表达式 3+5,6+8 a=3*5,a*4
25. 习题
~7~
C 语言程序设计知识点
主讲教师:杨剑
有以下程序
main()
{
char a1=’M’,a2=’m’;
12. 单精度浮点型
float 在 C 语言中用于存储单精度浮点数 float 32 位 10-38 至 10+38 ,7 位有效数字 声明:
float price; 初始化:
float score = 11.3; score = 65.90;
13. 双精度浮点型
double 32 位 16 位有效数字 声明:
const float PI=3.14; S=PI*r*r; //等价于 3.14*r*r const 关键字的作用就是“冻结”一个量,它的值不能被修改,是一个只读(read only) 量。 优点:比数值常量可读性好、修改容易
18. 符号常量 2(宏常量)
还可用宏定义符号常量 语法:#define 符号名 常量值 例: 计算圆的周长时
C语言程序设计第二章
2.2 理论知识
运行结果:
2.2 理论知识
常量和变量 直接常量
字符串常量 字符串常量是用一对双引号括起来的零个或多个字符
如"","Hello,world!","123"等
双引号仅起定界作用,本身并不是字符串中的内容
2.2 理论知识
常量和变量 直接常量
字符串常量 字符串的长度 指一个字符串中所包含的字符个数 C语言规定在存储字符串常量时,由系统在字符串的末 尾自动加一个'\0'作为结8.539815
2.2 理论知识
符号常量的两个好处
1. 修改程序方便 2. 见名知意,便于理解程序
符号常量的使用
1. 其值在它的作用域内不能改变,也不能再被赋值 2. 符号常量名用大写,变量名用小写,以示区别
2.2 理论知识
举例:
#define PI 3.1415
void main() { int PI; PI=3.1415; PI=3.14159; }
指针类型 构造类型 空类型
数组类型
结构体类型
共用体类型
2.2 理论知识
C语言的基本数据类型 整数类型
数据类型 有符号整型
短整型 长整型
int a,b,sum; a=32768;
数据类型符 int
short long [int] [int]
占用字节数 2
2 4
取
值
范
围
-215~(215-1) 即-32768~32767
2.2 理论知识
常量和变量 变量的赋值
在定义变量时赋值 float data1=1.5,data2=2.6;
“先定义后赋值
C语言 数据类型、运算符和表达式
【例2. 3】整型数据的溢出 #include <stdio.h> 运行结果: int main(void) 若用Turbo C2.0编译器,其结果为: { X=32767,y=-32767 int x,y; 若用Visual C++6.0编译器,其结果为: x=32767; X=32767,y=32769 y=x+2; printf("x=%d,y=%d\n",x,y); return 0; } 这是由于Turbo C2.0的整型数据占2个字 Company Logo 节, Visual C++6.0的整型数据占4个字节
第2章 数据类型、运算符和表达式
本章内容
1
2 3
C语言的标识符和关键字
C语言的基本数据类型
运算符和表达式
4
数据的输入输出
Company Logo
学习目标
1
2 3 4 5 5
掌握C语言的标识符和关键字 掌握C语言的基本数据类型 掌握不同数据类型的转换
掌握各种运算符的使用方法及其优先级和结合性
掌握字符数据输入输出函数getchar和putchar的用法 掌握字符数据输入输出函数getchar和putchar的用法
\r \f \\ \' \" \a 回车 走纸换页 反斜杠字符'\' 单撇号字符 双撇号字符 报警,相当于’\007‟ 字符形式 功 能
\ddd
\xhh
1~3位8进制数所代表的字符
1~2位16进制数所代表的字符
演示
Company Logo
第2章 数据类型、运算符、表达式
第二章 数据类型、运算符、表达式一、数据类型C 语言中的数据类型比别的语言丰富。
基本类型的数据又可分为常量和变量,它们可与数据类型结合起来分类,即为整型常量、整型变量、实型(浮点型)常量、实型(浮点型)变量、字符常量、字符变量、枚举常量、枚举变量。
1、常量与符号常量常量:在程序执行过程中,其值不发生改变的量称为常量。
常量区分为不同的类型,如68、0、-12为整型常量,3.14,9.8为实型常量,‘a ’,‘b ’,‘c ’则为字符常量。
常量即为常数,一般从其字面即可判别。
符号常量:有时为了使程序更加清晰和便于修改,用一个标识符来代表常量,即给某个常量取个有意义的名字,这种常量称为符号常量。
如:#define PI 3.142、变量变量:程序执行过程中其值可以改变的量。
定义方法定义形式:数据类型 变量名1,变量名2,……变量名n ;整型(int )数据类型 基本类型 整型 单精度型(float )字符型(char )长整型(long )短整型(short )实型 双精度型(double )枚举类型(enum )共用体类型(union )构造类型结构体类型(struct )数组类型空类型(void )指针类型(*)如:char ch1, ch2; /* ch1,ch2为变量*/float x, y; /* x ,y 为实型变量*/int a, b, c; /* a,b,c 为整型变量*/在书写变量说明时,应注意以下几点:(1) 允许在一个类型说明符后,说明多个相同类型的变量。
各变量名之间用逗号间隔。
类型说明符与变量名之间至少用一个空格间隔。
(2) 最后一个变量名之后必须以“;”号结尾。
(3) 变量说明必须放在变量使用之前。
一般放在函数体的开头部分。
另外,也可在说明变量为整型的同时,给出变量的初值。
其格式为:类型说明符 变量名标识符1=初值1,变量名标识符2=初值2,...;3、数据在内存中的表示整型数据:以二进制的形式表示(1) int 类型正数: 如 123 (+123)用 16 位二进制(二个字节)表示原码 反码(原码同) 补码(原码同)最大正整数 215-1=214+213+212+211+210+29+2827+26+25+24+23+22+21+20=32767负数:如 –123原码补码(补码加 1)1取反加1 最大负整数-215=32768 因为 -215 < -(215-1) 所以用 -215 而不用 -(215-1)(2) unsigned (int) 类型称为无符号整数,它不是指不带“+ 或 -”号的整数,而是指内存表示这类数时没有符号位,16最大数215+214+213+2122+21+20=65535最小数 0 (3) long (int) 类型用 32 位二进制(四个字节)表示,其他同 int 型(4) short 类型有的计算机(小型、中型、大型机)int 即是 long ,而short 用16 位二进制(二个字节)表示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章C语言的数据类型和运算2.1 数据类型数据是计算机加工处理的对象,C语言中的数据包括:常量、变量和有返回值的函数。
为存储和处理的需要,将数据划分为不同的类型,编译程序为不同的类型分配不同大小的存储空间(存储单元的字节数),并对各种类型规定了该类型能进行的运算(运算符集),任何类型数据的值均被限制在一定的范围内,称为数据类型的值域(取值范围)。
说明: ●构造类型是由基本类型按一定的规律构造而成的。
●空类型的作用:①表示函数没有返回值;②说明函数无参数;③表示指针不指向任何值。
2.1.2 数值型数据的表示与存储形式如π的表示:日常表示C语言中的表示小数点的位置是浮动的,称为浮点数形式。
在计算机内部实数都以浮点形式存储,如float占4个字节,三个字节存数字部分,一个字节存指数部分。
小数点的位置是固定的,称为定点数,如:3.14159 ,10,-20, 1992显然整数都属于定点数,如:整数10,在计算机内部一般占2个字节。
定点数的小数点一般是在最高位(定点小数)或在最低位(定点整数)。
对于实数型定点数如:3.14159,C语言则把它按指数形式存放3.14159e0,即C的实数一律以浮点形式存储。
2.1.3 字符型数据的表示和存储形式 字符型数如:(‟a‟,‟A‟,‟#‟,‟3‟)在内存中以相应的ASCII 代码存放(占一个字节),如‟a‟的ASCII 代码为97,存储形式为:在C中,‟a‟等价。
2.1.4 基本类型的名字和长度 下列关键字称为类型区分符:char 、 int 、 short 、 long 、 signed 、unsigned 、float 、double 类型区分符代表一个基本类型的名字,用来说明一个数据的类型。
说明:①signed 和unsigned不能同时修饰char ,short 和long 或signed 和unsigned 不能同时修饰int 。
float 不能使用任何修饰词,double 可用long 修饰;②int 的长度与具体机器的字长相同,在16位机上为2字节,在32位机上为4字节。
因此,int 的长度与short 或long 相同。
③signed char 用1个字节的低7位表示字符值,最高位表示符号。
unsigned char 用整个字节表示字符值,无符号位。
char 表示有符号和无符号与具体机器系统有关,但char 一定和signed char 或unsigned char 其中之一同。
在多数机器系统中,char 与signed char 同。
④浮点类型的范围与浮点在机器内的表示有关,标准C没有规定浮点数格式,大多数机器浮点数格式为:对于4个字节浮点数,阶码占8位,尾数占23位,1位符号位:在浮点数中尾数位决定精度(有效数字位数),阶码决定取值范围。
⑤对于带符号的数据类型,一般用最高位(左边第1位)表示符号,0表示正,1表示负,数值以补码形式存放(一个正数的补码是该数的二进制数),如(10)补为0000000000001010。
一个负数的补码为取反加1,如(-10)补为1111111111110110。
表中列出的short ,int , long 是带符号的(隐含signed);⑥对于无符号的数据类型,最高位不作为符号,与其它各位一起表示数值,因此,无符号数只表示正数不表示负数,与同样长度的带符号正数相比表示的最大数扩大了一倍。
⑦字符型数据也分为signed 和unsigned 。
ANSI 标准ASCII 码字符的允许取值范围为0~127,用7位表示就可以了,最左位补0表示正数。
有些计算机系统,除ASCII 码字符外,还扩展使用一些图形符号(如“≥”),扩充使用用128~255,其第一位为1。
因此,对signed 字符型数取值范围为-128~127。
对unsigned 字符型,取值范围为0~255;⑧ 实数类型数据signed 、unsigned 之分; ⑨以后各章均使用类型的简写形式;⑩C语言提供了一个测试某一类型数据所占存储空间长度的运算符sizeof ,格式为sizeof(类型标识符)。
如sizeof(char)为1, sizeof(long)为4。
2.2 常量和变量C的常量有两种形式:一种是文字常量,简称常量或常数,文字常量是由表示值的文字本身直接表示的常量,如123,3.14159;另一种是符号常量,是用标识符表示的文字常量(标识符一般用大写英文字母),标识符是文字常量的名字。
任何一个常量都属于一个数据类型,文字常量的类型由文字常量自身隐含说明,如123为整型,3.14159是一个浮点型,符号常量的类型由定义时指定。
2.2.1常量的表示C的常量有整数常量、浮点常量、字符常量、字符串常量和枚举常量。
1.整数整数有三种形式:十进制整数、八进制整数和十六进制整数。
①十进制整数十进制整数由数字0~9组成的数字串,多位数时最左第一个数字不能为0,前面可以有表示正负的符号“+”或“-”,“+”可以省略。
如738 -50 0 +39 是合法的整数。
②八进制整数八进制整数由数字0~7组成的数字串,第一个数字必须为0(前导零),它是八进制数的标志,八进制一般用于表示无符号数如:0137 027 +013 -024 是合法的八进制整数,而0128非法。
八进制可以与十进制转换:如0137=1*82+3*81+7*80=95若将95转换为八进制:③十六进制整数十六进制整数是由数字0~9和字母a ~f (或A~F)组成的符号串,符号串必须以0x 或0X(十六进制的前缀)开头,十六进制表示无符号整数,如0x13a 0xc32 0xff 0xb8000xdc都是合法的十六进制整数。
013a x13a 13a均为非法。
说明:①所有整数的缺省类型是int,通过在其后面加后缀字母,可以表示长整数(long)无符号整数(unsigned)和无符号长整数(unsigned long)。
长整数:在任意进制整数后面加l或L,如27l 018l 0x1aL无符号整数:在任意进制整数后加u或U。
如27u 0400U 0x1aU无符号长整数:任意进制的整数后加ul或UL。
如:27ul 0400UL 0x1aUL.后缀字母大小写任意,由于l与数字1容易混,常用L。
②当整数的值超出int类型所能表示的范围时,称为整数溢出。
整数溢出会产生不正确的结果,为避免溢出或类型转换的需要,应根据具体情况将整数相应地表示为长整数、无符号整数或无符号长整数,如在16位机上,整数123456会产生溢出,应表示成123456L.2、浮点数浮点数的一般形式为:[±][整数部分] [.][小数部分] [e±n]其中[ ]表示可选项,e±n称为指数部分,1e±n 表10±n, “e”可以写成“E”。
n 称为阶码(1~3位十进制无符号常整数,可以有前导0但仍表示十进制),n前面的“+”可以省略。
如-123.567e+5 -123.567E5 -123.567e05 都是代表值-12356700.0浮点数的组成规则如下:①一个浮点数可以无整数部分或小数部分,但不能二者均无。
②一个浮点数可以无小数点或指数部分,但不能二者均无。
例如:3.141593 .1E+02 -.234e+5 –243.e-2 2.01234e+3 0. .08 100.0 都是合法的浮点数。
若将2.01e+3写成2010,将0. 写成0,或将100. 写成100则它们不是浮点数而是整数。
下面一些是非法表示:-.e+1 既无小数部分也无整数部分0.1e-0.5:阶码不是整数0.1e+I:阶码不是常量(除非I已定义为符号整型常量)当浮点数超出它的类型所能表示的范围产生浮点溢出。
如果浮点数的绝对值小于所能表示的最小值则下溢。
如1.7e-309和-1.7e-309均产生下溢。
下溢时绝对值太小以致机器不能表示而产生零值,称之为“机器零”。
下溢时机器可能不能正常运行。
当浮点数的绝对值大于所能表示的最大值时产生上溢,如1.7e309和-1.7e309均产生上溢。
上溢时将产生错误的结果。
浮点数的缺省类型是double,通过在浮点数后面加后缀字母可以表示单精度(float)数、双精度数(double)和高精度(lang double) 数。
单精度浮点数:在浮点数后面加f或F。
如:3.14159F。
双精度浮点数:在浮点数后面加d或D。
如:3.14159d。
高精度浮点数:在浮点数后面加l或L。
如:3.14159L。
在程序中可根据存储的需要、精度的需要或类型转换的需要将浮点数表示为适当的类型。
3、字符常数字符常数通常是指一对单引号(单撇号)括起来的一个字符,形式为:‘字符’字符常数可以被看成是一个整数,值为该字符的ASCII码值。
字符常数有两种表示方法。
(1)用字符的图形符号表示一个字符,形式为:‘字符的图形符号’字符的图形符号是指可打印字符,ASCII码字符集中,字符码为32~126的字符是可打印字符,因而这种方法只适用于部分字符。
如:‘’‘a’‘B’‘+‟ …3‟ …>‟…~‟注意:‘a‟和a表示两种完全不同的概念,‘a‟是一个字符常数,a是由单个字母构成的标识符。
另外,在可打印字符中,有两个特殊字符不能用图形符号来表示,它们是单引号本身(’)和反斜线(\)。
即‘‘’‘\’是非法表示,要想表示它们必须用转义序列表示。
(2)用转义序列表示一个字符,形式为:‘转义序列’转义序列是由反斜线(\)开头的一个特殊字符串,每个转义序列表示字符集中的一个字符,转义序列及其表示的字符如表2.2所示。
表2.2转义序列说明:(1)从表中可以看出,转义序列有两种形式:一种是反斜线后跟一个图形符号;另一种转义序列的位型“\ooo”和“\xhh”。
前者表示常用的控制字符(字符码为0~31的字符),如‘\n’表示一个换行字符,其ASCII码为十进制10。
后者可以表示字符集中的任一字符(字符码为0~255的所以字符)。
(2)位型中的ooo表示1~3个八进制数字,可以不用前缀0;hh表示1~2个十六进制数字,x 是前缀不能省。
例如:水平制表符可用下列任一种形式表示:‘\t’…\011‟ …\11‟ …\x0b‟ …\xb‟字符A可用下列任一种形式表示:‘A’...\101‟ (x41)(3)单引号和反斜线字符虽然是打印字符,但编译程序规定必须用转义序列表示。
例如:单引号字符可用下列任一种形式表示:...\‟‟ ...\047‟ ...\47‟ (x27)反斜线字符可用下列任一种形式表示:…\\‟ …\0123‟ …\123‟ …\x5c‟(4)双引号字符常数可以用图形符号或转义序列任一种形式表示。