第3章 数据类型、运算符与表达式.

Slides:



Advertisements
Similar presentations
人的性别遗传 合肥市第四十九中学 丁 艳. 男女成对染色体排序图 1 、男性和女性各 23 对染色体有何异同 ? 哪 一对被称为性染色体 ? 2 、这两幅图中,哪幅 图显示的是男性的染色 体?哪幅图显示的是女 性染色体? 3 、图中哪条染色体是 Y 染色体?它与 X 染色体 在形态上的主要区别是.
Advertisements

XX啤酒营销及广告策略.
1、一般地说,在生物的体细胞中, 和 都是成对存在的。
辨性别 A B. 辨性别 A B 第三节人类染色体与性别决定 昌邑市龙池初中 杨伟红 学习目标 1.理解人的染色体组成和传递规律。 2.解释人类性别决定的原理。 3.通过探究活动,解读数据了解生男生女的比例。
2011年10月31日是一个令人警醒的日子,世界在10月31日迎来第70亿人口。当日凌晨,成为象征性的全球第70亿名成员之一的婴儿在菲律宾降生。 ?
七(7)中队读书节 韩茜、蒋霁制作.
初级会计实务 第八章 产品成本核算 主讲人:杨菠.
中考阅读 复习备考交流 西安铁一中分校 向连吾.
清仓处理 跳楼价 满200返160 5折酬宾.
中央广播电视大学开放教育 成本会计(补修)期末复习
人教版义务教育课程标准实验教科书 小学数学四年级上册第七单元《数学广角》 合理安排时间 248.
1.1.2 四 种 命 题.
色 弱 與 色 盲.
中考语文积累 永宁县教研室 步正军 2015.9.
宠物之家 我的宠物性别? 雌(♀) or 雄(♂) 第一阶段:我的宠物我做主 第二阶段:宠物“相亲记” 第三阶段:家族诞生
课标教材下教研工作的 实践与思考 山东临沂市教育科学研究中心 郭允远.
小学数学知识讲座 应用题.
北师大版七年级数学 5.5 应用一元一次方程 ——“希望工程”义演 枣庄市第三十四中学 曹馨.
倒装句之其他句式.
海洋存亡 匹夫有责 ——让我们都来做环保小卫士 XX小学三(3)班.
公務人員優惠存款制度再改善的 重點介紹 銓敘部退撫司
三角形的邊角關係 大綱:三角形邊的不等關係 三角形邊角關係 樞紐定理 背景知識:不等式 顧震宇 台灣數位學習科技股份有限公司.
第 22 课 孙中山的民主追求 1 .近代变法救国主张的失败教训: “师夷之长技以制 夷”“中体西用”、兴办洋务、变法维新等的失败,使孙中山
C语言程序设计 第十二章 位运算.
C语言程序设计 第五章 选择结构程序设计.
C程序设计.
程序设计专题一 结构化程序设计与递归函数 主讲教师: 刘新国.
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第二章 基本元素、类型和概念 七、输出函数printf 八、输入格式转换函数scanf.
作弊是否很有诱惑性? 上堂课已经讲了 作业不一定在两个小时里都能完成 答疑没有一个人? 作弊是有记录的 心理系很多同学集体作弊,让人震惊
第三节 整数类型.
第三章 数据类型、运算符与表达式.
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第4章 顺序程序设计.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
第四节 浮点数类型.
第3章 變數、算術運算、 數學函數及輸入輸出.
Java變數 2014/6/24.
第2章 数据类型及表达式 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
第 二 章 数据类型、运算符与表达式.
指標
C程序设计.
C语言程序设计 李祥 QQ:
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第2章 数据类型、运算符与表达式 2.1 程序设计概述
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
THE C PROGRAMMING LANGUAGE
第二章 类型、对象、运算符和表达式.
第2章 数据类型与表达式 学习目的与要求: 掌握C 语言的基本数据类型及使用方法 掌握C程序中常用的运算符和表达式 了解数据类型的转换.
陣列 東海大學物理系‧資訊教育 施奇廷.
第二章 基本数据类型 ——数据的表示.
Review 1~3.
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
本节内容 指针类型.
本节内容 算术运算符 视频提供:昆山爱达人信息技术有限公司.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
Introduction to the C Programming Language
第十二章 位运算.
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
變數、資料型態、運算子.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
第二章 计算机中的信息表示.
畢氏定理(百牛大祭)的故事 張美玲 製作 資料來源:探索數學的故事(凡異出版社).
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
102年人事預算編列說明 邁向頂尖大學辦公室製作.
Presentation transcript:

第3章 数据类型、运算符与表达式

本 章 内 容 C的数据类型 常量和变量 整型、实型、字符型数据 变量赋初值 各类数值型数据间的混合运算 算术运算符和算术表达式 赋值运算符和赋值表达式 逗号运算符和逗号表达式

3.1 C的数据类型 数据以特定的形式存在:如整数、实数、字符等。 数据结构:数据的组织形式 数据元素之间存在某些联系 线性(Linear)结构 层次结构或树(Tree)结构 网状或图(Graph)结构

3.1 C的数据类型 处理同一类问题,如果数据结构不同,算法也不同,应综合考虑,选择最佳的数据结构和算法。 基本类型 整型 字符型 实型单精度 枚举类型 实型双精度 构造类型 数组类型 结构体类型 共用体类型 指针类型 空类型 处理同一类问题,如果数据结构不同,算法也不同,应综合考虑,选择最佳的数据结构和算法。

3.2 常量和变量 常量和符号常量 常量 在程序运行过程中其值不能被改变的量。 如字面常量:如3.6, -8, 'A'等。 符号常量:用标识符代表的常量。 例3.1: #define PRICE 30 main() { int num, total; num = 10; total = num * PRICE; printf("total = %d", total); }

3.2 常量和变量 变量 运算过程中其值可以改变的量。 系统为程序中的每一个变量开辟一个存储单元,用来存放变量的值。如: X = 3.5 6.3 X

3.2 常量和变量 变量的命名 标识符:用来标识变量名、符号常量名、函数名、类型名、文件名的有效字符序列,不能与关键字同。 C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 变量名实际上是一个符号地址。

3.2 常量和变量 变量的定义 C语言中要求变量要先定义,后使用。 变量的定义格式: 数据类型 变量名列表; 例如:int x, y; 数据类型 变量名列表; 例如:int x, y; int a; char c; 变量定义时要具体指出该变量要存放数值的类型,从而为该变量分配相应数据类型的内存单元空间。 变量定义时指定数据类型用来进行操作的匹配性检查。例如: int n; n = 5.5; printf("%d\n"); 输出结果:5 ?

3.3 整型数据 整型常量的表示方法 十进制整数 八进制整数:以数字0开头,如0123。任意一个八进制整数可表示为: C = cn-18n-1 +cn-28n-2 +…+c181 + c080 Ci只能取0~7之一的值;八进制的基数是8。 十六进制整数:以0x开头,如0x123。 采用十六个不同的记数符号,即数码:0~9及A、B、C、D、E、F。 采用逢十六进一的进位原则,各位数的"权"是以16为底数的幂。 例如: (2AF)16 = 2×162+A×161+F×160 =2×162+10×16 +15×1 =(687)10

3.3 整型数据 整型变量 整型数据在内存中的存在形式 数据在内存中以二进制形式存放。例如: int i; i = 10; 数值是以补码形式表示的。 10 1

3.3 整型数据 整型变量的分类 根据数值的范围将变量定义为3种整型变量: 基本整型 int,-215~(215-1) 短整型 short [int], -215~(215-1) 长整型 long [int], -231~(231-1) 加上修饰符unsigned,有6种整型变量: [signed] int 有符号基本整型 unsigned [int] 无符号基本整型 [signed] short [int] 有符号短整型 unsigned short [int] 无符号短整型 [signed] long [int] 有符号长整型 unsigned long [int] 无符号长整型

3.3 整型数据 C标准没能具体规定以上各类数据所占内存字节数,由各计算机系统自动决定。 Turbo C整型类型的取值范围见表3.1。

3.3 整型数据 整型变量的定义 对变量的定义,一般在一个函数开头部分的声明部分定义。例如: main() { int a, b, c; c = a+b; printf("%d", c); }

3.3 整型数据 整型数据的溢出 例3.3 main() { int a , b; a = 32767; b = a + 1; printf("%d", b); } 分析结果?

3.3 整型数据 整型常量的类型 将一个整型常量赋值给某个整型变量时要做到类型匹配,注意以下几点: 不同的类型有不同的取值范围,例如: int:-215~(215-1) long:-231~(231-1) int整数可赋值给int型和long int型变量。 long整数可赋值给long int型变量。 如果某一计算机系统的C版本确定short int与int型数据在内存中长度相同,二者可互相赋值。 一个整常量后加u或U表示unsigned int型。 一个整常量后加l或L表示long int型。 例如:678u、123l、432L

3.4 实型数据 实型常量的表示方法 十进制小数形式:必须有小数点 例如:12.65 .25 0.0 例如:12.65 .25 0.0 指数形式:字母e(E)之前必须有数字,且e后的指数必须为整数。 例如:15e3(15000),1.5e4 规范化指数形式 在字母e(E)之前的小数部分中,小数点左边有且只能有一个非零的数字。 例如: 2.3478e2

3.4 实型数据 标准C未规定小数部分和指数部分所占bit数,而由各C编译系统自定。 实型变量 实型数据在内存中的存放形式 一般占4个字节。 系统把一个实型数据分成小数部分和指数部分分别存放。 例如:3.14159 1 .314159 + 数符 小数部分 指数 32bit 标准C未规定小数部分和指数部分所占bit数,而由各C编译系统自定。

3.4 实型数据 实型变量的分类(以Trubo C为例) 单精度型 float,32bit,6~7有效数字 双精度型 double,64bit,15~16有效数字 长双精度型 long double,128bit,18~19有效数字 实型数据的舍入误差 由于存储单元中有效数字的位数有限,故会产生误差。例3.4: main() { float a, b; a = 123456.789e5; b = a + 20; printf("%f",b); } 分析输出结果?

3.4 实型数据 在运算中,尽量不要使两个相差很大的数值相加或相减。 例如: 0.001 + 1246825.0 – 1246820.0 = 1246825.0 – 1246820.0 = 5.0 而准确结果应为5.001。 如果: 0.001 + (1246825.0 – 1246820.0) = 5.001 在运算中,尽量不要使两个相差很大的数值相加或相减。

3.4 实型数据 实型常量的类型 C编译系统将实型常量作为双精度来处理。当在数后加f(F)时按单精度处理,从而可提高运算速度。 一个实型常量可以赋值给任意一个实型变量,根据其类型不同截取相应的有效数字。 例如: float a; a = 111111.111; printf("%f", a);

3.5 字符型数据 字符常量 用单引号引起来的单个字符。例如:'a', 'A'。 特殊的字符常量——转义字符 以一个"\"开头的字符序列,在屏幕上不能显示。 常用的以"\"开头的特殊字符见表3.3。 用ASCII表示一个字符 \ddd:1到3位8进制数所代表的字符 \xhh:1到2位16进制数的代表的字符 此方法可表示任何可输出的字母字符、专用字符、图形字符和控制字符。

3.5 字符型数据 字符变量 用来存放字符常量(只能存一个字符)。 字符变量的定义 char 字符变量列表 例如: char c1, c2; char a; char b; char x; char y; 字符变量的赋值 c1 = 'a'; c2 = 'b'; x = c1; y = c2;

3.5 字符型数据 字符数据在内存中的存储形式及其使用方法 字符在内存中以其ASCII代码值存储。 'a' = 97 01100001 字符与整数的存储形式类似,可以以两种形式输出,也可进行算术运算。二者还可以互相赋值。 例3.6 main() { char c1, c2; c1 = 97; c2 = 98; printf("%c %c\n", c1, c2); printf("%d %d\n", c1, c2); }

3.5 字符型数据 例3.7 main() { char c1, c2; c1 = 'a'; c2 = 'b'; c1 = c1 – 32; printf("%c %c", c1, c2); }

3.5 字符型数据 字符串常量 字符串是由一对双引号引起来的字符序列。 例如:"china","a"。 \0 字符常量和字符串常量的区别。 表示方法不同。 占用的存储空间不同。 不能把一个字符串常量赋值给一个字符变量。

3.6 变量赋初值 C语言允许在定义变量的同时给变量设置初值,称之为变量的初始化。例如: int x=5; int a, b, c=3; float d=5.88, m=7.29; char c='r'; 变量的初始化不是以编译阶段完成,而是在程序运行时赋予初值。 例如: int a = 3; 相当于: int a; a = 3;

3.7 各类数值型数据间的混合运算 整型、实型、字符型数据间可以混合运算。 例如: 10 + 'a' + 1.5 – 8765.23 * 'b' 不同类型数据进行运算时,要先转换成同一类型,再进行运算。 转换规则(见p54图3.10) 高 double float long unsigned 低 int char, short 横向朝左的箭头表示必定的转换。 纵向箭头表示当运算对象为不同类型时转换的方向。低级类型转换为高级类型。 转换是由系统自动进行。

3.8 算术运算符和算术表达式 C的运算符 有13类,见p55。 算术运算符和算术表达式 基本的算术运算符:+、 –、 *、 /、 % 两个整数相除的结果为整数。 如果参加+, -, *, /运算的两个数中有一个数为实数,则结果为double型。 算术表达式和运算符的优先级和结合性 C算术表达式 用算术运算符和括号将操作数连接起来的、符合C语法规则的式子称为C算术表达式。 操作数:常量,变量,函数等。 表达式求值时按运算符的优先级别高低次序进行,优先级别相同时按规定的"自左至右"的结合方向处理。

3.8 算术运算符和算术表达式 强制类型转换运算符一般形式为: (类型) <表达式> 例3.8 main() { (类型) <表达式> 例3.8 main() { float x = 3.6; int i; i = (int)x; printf("x=%f, i=%d", x, i); } 分析程序输出结果? 在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。 有两种类型转换 系统自动进行的类型换。 强制类型转换。

3.8 算术运算符和算术表达式 自增(++)、自减(--)运算符 使变量的值加一或减一。 前缀形式:++i, --i 例如: int i = 3, j, k; j = i++; k = ++i; printf("%d, %d, %d", i, j, k); 分析程序结果?

3.8 算术运算符和算术表达式 说明: ++和--运算符只能用于变量,不能用于常量或表达式。 分析:(a + b)++ ? ++和--的结合方向是"自右至左"。 例如:-x++ 相当于-(x++)

3.8 算术运算符和算术表达式 表达式使用中应注意的问题 ANSI C没能具体规定表达式中的子表达式的求值顺序,允许各编译系统自己安排。 例1: a = f1() + f2(); 例2:int i = 3, j; j = (i++) + (i++) + (i++); 编程时应避免出现这种歧义性。 当多个运算符相连时,C编译系统尽可能多地自左至右将若干个字符组成一个运算符。 例3:a+++b 相当于 (a++) + b

3.8 算术运算符和算术表达式 在调用函数时,实参数的求值顺序,C标准无统一规定。 例4: int i = 3; printf("%d, %d", i, i++); 结果1:3, 3 结果2:4, 3 改进: int i = 3; j = i ++; printf("%d, %d", i, j);

3.9 赋值运算符和赋值表达式 char int long float double long double 1 2 4 8 16 "=":将其右边表达式的值赋给左边的变量。 例如: int x; x = 2.34; 类型转换 Trubo C不同类型数据的长度(B): char int long float double long double 1 2 4 8 16

3.9 赋值运算符和赋值表达式 实型数据赋给整型变量:舍弃小数部分。 整型数据赋给实型变量:数值不变,以浮点型存储。 double型数据赋值给float变量,截取其前面7位有效数字,注意数值范围不能溢出。 字符型数据赋给整型变量:只占低八位,符号扩展。 整型数据赋给字符型变量:截取低8位。 带符号整型(int)赋给长整型变量:进行符号扩展。而将long型数据赋值给int型变量时,截取低16位。 无符号整型(unsigned int)赋给长整型变量:高位补0。 将非unsigned型数据赋给长度相同的unsigned型变量,原样照赋。 不同类型的整型数据间的赋值归根到底即:按存储单元中的存储形式直接传送。

3.9 赋值运算符和赋值表达式 复合的赋值运算符 赋值号"="之前加上一个算术运算符(逻辑运算符,位运算符)称为复合运算符。如+=,-=,*=,/=,%=。 例如: x+=5 等价于 x=x+5 x*=y+8 等价于 x=x*(y+8) 凡是双目运算符,都可与赋值符一起组合成复合赋值符。 C语言规定了10种复合赋值运算符。(P62)

3.9 赋值运算符和赋值表达式 赋值表达式 由赋值运算符将变量和表达式连接起来的式子,称为赋值表达式。 一般形式 <变量名> <赋值运算符> <表达式> 右边的表达式又可以是一个赋值表达式。 如:a=(b=5) 赋值运算符按照"自右至左"的结合顺序赋值。 如上式等价于:a=b=5 又如:a=(b=4)+(c=6) 表达式的值为10,a值为10,b为4,c为6。 赋值表达式不仅可以现出在赋值语句中,还可以出现在其他语句(如输出语句、循环语句等)中。 如:printf("%d", a=b);

3.10 逗号运算符和逗号表达式 逗号运算符 ",",又称顺序求值运算符。 逗号表达式 用逗号将两个表达式连接起来,得到的表达式称为逗号表达式。 逗号表达式的一般形式: 表达式1,表达式2 逗号表达式的求解过程: 先求表达式1的值,再求表达式2的值。整个表达式的值是表达式2的值。 例1: a=3*5, a*4 ("="的优先级别高与",") 例2: (a=3*5, a*4), a+5 (逗号表达式的值为20)

逗号表达式的一般扩展形式 表达式1,表达式2,表达时3, … 表达式n 它的值为表达式n的值。 说明: 逗号运算符是所有运算符中级别最低的。 并不是任何地方现出的逗号都是作为逗号运算符。 如:printf("%d,%f ", a, b); 逗号表达式最常用于循环语句中。

作 业 P66-68 3.5 3.8 3.9 3.10 3.12