第二章 数据类型(3)

合集下载

第2章_数据类型、运算符和表达式《C语言程序设计(第三版)》-电子教案

第2章_数据类型、运算符和表达式《C语言程序设计(第三版)》-电子教案

2.2 标识符、常量与变量

符号常量
【例2-1】输入圆的半径,计算周长和面积。 #define PI 3.14159 void main() { float r,c,s; scanf("%f",&r); c=2*PI*r; s=PI*r*r; printf("r=%f,c=%f,s=%f\n",r,c,s); }

以下是合法的整型常量:

2.2 标识符、常量与变量

实型常量

实型常量只能用十进制形式表示 表示形式:


小数形式。由数字序列和小数点组成,如 3.1415926、-0.15、.15、2.等都是合法的实型 常量。 指数形式。由十进制数加上阶码标志“e”或 “E”及阶码组成,如3.14e-4或3.14E-4表示 3.14×10-4。
2.2 标识符、常量与变量

2.2.3 变量


在程序运行过程中,其存储的值可以被改变的量称 为变量 变量必须通过标识符进行说明,称为变量名。 变量名和内存单元地址存在映射关系,程序可以通 过变量名寻址,从而访问其存储的数据。
2.2 标识符、常量与变量

变量的定义和说明

数据类型 变量名1[,变量名2,…,变量名n];
long型转换成float型时由原来可达10位整数变成只有7位有效数字精度丢失但由于数的范围扩大了数据类型从较低级提升到较高级随着竞争日益激烈酒店嘴中的肥肉被大肆抢夺各大酒店在这场竞争中几乎溃不成军
21世纪高等学校精品规划教材
第2章 数据类型、运算符 和表达式



掌握C语言的基本数据类型 掌握标识符、关键字、常量和变量的使用 掌握运算符、表达式以及数据类型之间的转换 等 掌握简单数据的输入输出

C语言教程课件第二章 数据类型、运算符和表达式

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语言教案:数据类型
教学
环节
教学活动内容及组织过程
个案补充




一、复习引导
上次课我们已经学习了程序的一个方面算法,现在来学习另一方面数据结构。
二、内容设计
C有三种基本数据类型,分别是整型、浮点型、字符型
(一)、常量与变量
1、常量:在程序运行过程中,其值不能被改变的量。
两种形式:一般常量和符号常量
(1)常量(字面常量):
江苏省XY中等专业学校2022-2023-1教案编号:
备课
组别
计算机
上课
日期
主备
教师
授课
教师
课题
第二章数据类型
教学
目标
1、掌握C的数据类型
2、掌握整型、实型、字符型数据的常量及变量
重点
各种基本数据类型的常量和变量
难点
不同类型的数据在内存中的物理存储形式Leabharlann 教法讲授法、案例教学法、讨论法
教学设备
黑板 计算机网络机房
a=12; b=-24; u=10;
c=a+u; d=b+u;
printf(“a+u=%d, b+u=%d\n”,c,d); }
4)整型数据的溢出
一个int型变量的最大允许值为32767,如果再加1,其结果不是32768,而是-32768。即“溢出”。
(三)、浮点型数据
1、浮点型常量的表示方法
(1)十进制浮点数
3)转义字符:
以‘ \ ’开头,后跟一个约定的字符或所要表示字符的十六进制(或者八进制)的编码;
2、字符变量:字符变量用来存放字符常量,只能放一个字符。例:char c1=‘a’, c2=‘A’;一个字符变量在内存中占一个字节。

C语言学习第二章数据类型

C语言学习第二章数据类型
基本整型:表示范围为0~0177777。 ③十六进制数:
基本整型:表示的范围为0X0~0XFFFF。
2.4.2 整型变量
1.整型变量在内存中的存放形式
以二进制补码的形式存放。
正数:最高位为0,其余各位是该数的二进制表示 负数:最高位为1,其余各位是该数绝对值的二进制
再按位取反加1
2. 整型变量的分类
放一个字符。
下面是对c1、c2赋值: c1=‘a’;c2=‘b’; (实际上其内存中存放的是该字符的ASCII码)
字符变量的初始化,如:char c1=‘a’,c2=‘b’;
2.5.3 字符数据在内存中的存储形式及其使用方法
将一个字符常量放到一个字符变量中,实际上是将该字 符的ASCII代码以二进制形式放到存储单元中。
无符号型:(只能存放0和正整数) ① 基本整型:类型说明符为unsigned int或unsigned
在内存中占2个字节 取值范围为0~2161,即0~65535。 ② 短整型:类型说明符为unsigned short (int) 所占字节和取值范围均同基本整型。 ③ 长整型:类型说明符为unsigned long (int) 在内存中占4个字节 其取值范围是0~2321 即0~4294967295
实型常量也称为实数或者浮点数。 实型常量不分单、双精度,都按双精度double型处理,其有 效位数为(15~)16位。
实型常量的表示方式有:
(1)十进制小数形式
小数形式由数字0~ 9和小数点组成。
当某浮点数整数部分或小数部分为0时,0可以省略,但小 数点不可省略。
例如:
0.0 , .25 ,5.789 ,0.13 ,5.0 , 300. 267.8230 , 123. 等均为合法的实数。

C语言程序设计 第2章 数据类型

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章 数据类型、运算符与表达式

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。

数据类型.

数据类型.
变量在声明时可以赋初值,也可以不赋初值。声明时未赋初值的 变量其值是不确定的,因此在使用变量前应先为其赋值。
2.3 变量赋初值
变量赋初值的方法有如下两种方法: • 在声明变量时为其赋初值,这种方法称为变量的初始化; • 在程序中使用赋值语句为变量赋值。
在变量声明时赋初值的一般格式为: 数据类型 变量1=值1[,变量2=值2,…]; 例如: int a= 25; float x=13.2,y=4,z=0.75; char ch1='K',ch2='P';
假定某机器的字长(自然大小)为16位,则该机器的整型数据类型及其取 值范围如下表。
数据类型 int short 特征 带符号16位整数 带符号16位整数 取值范围 -32,768~32,767 -32,768~32,767
long
unsigned int unsigned short unsigned long
六、符号常量
• 在C语言中,常常用一个标识符来代表一个常量,该标识符称为符 号常量。符号常量在使用之前必须先声明,声明格式如下:
#define <符号常量名> <常量>
其中,<符号常量名>为标识符,习惯上用大写字母,<常量>可以是 数值常量,也可以是字符常量。#define实际上是一个宏定义命令, 通过这个宏定义将常量定义为一个符号常量。在C语言程序中用符 号常量代替常量,在编译时由编译程序先将符号常量替换为所定义 的常量后再进行编译,这个过程称为宏替换。
四、字符串常量
• 字符串常量是用双引号括起来的一串字符。如: “how are you”,“x+y”,“A” 等都是字符串常量。 字符串在内存中存储时,系统自动在字符串的末尾加一个“字符串结束标志”,即 ASCII值为0的字符NULL,用‘\0’表示。因此,在程序中长度为n个字符的字符串常 量,在内存中占n+1个字节的存储空间。 例如:字符串“Hello”的长度为5,它在内在中占用6个字节,如下图所示:

2 C语言 第二章数据类型、表达式

2 C语言 第二章数据类型、表达式

说明
在整型常量尾部加上字母1或 时 在整型常量尾部加上字母 或L时,则 表示长整型常量.比如: 表示长整型常量.比如:18L或18l 或 整型(int)常量的值在 32768~32767之间 常量的值在 整型 之间 长整型(long int)常量的值在 长整型 常量的值在 2147483648 ~ 2147483647之间 之间
三位八进制 001 000 001 二进制 ( (用十进制表示为65) 65)
A' 如 \ 101 –– 表示字符'A' 又: \ x hh
用1到2位16进制数表示的 到 位 进制数表示的 进制数表示的ASCII码对应的字符 码对应的字符
如 \ x 41–– 表示字符'A'
0100 0001 二进制 (用十进制表示为65)
注意: 注意: 实型变量的有效数字的长度视机器而定 例如: 例如: pc机, 单精度一般为7位, 双精度15位 于是: float a; a=123456.789 则实际赋值a←123456.7 单精度表数范围: 单精度表数范围 10–38~1038 双精度表数范围: 双精度表数范围 10–308~10308 实数可以赋给float或double型变量.
对于较大或较小的数,可用指数形式 0.0000126 1260000 1.26E –5 1.26E+6 或1.26E6
' E ', 'e ' 均可, 表示以10为基数.E或e之前必须要 有数字,称为尾数部分或数码部分.规范化的尾数是将 小数点固定在第一位有效数字之后.ddd称为指数,指数 最多可达3位整数.
2.4.2 实型变量
分为单精度型 双精度型 单精度型与双精度型 单精度型 双精度型. 例如: 例如: float x, y, z ; 定义x, y, z为单精度变量. double a, b, c ; 定义a, b, c为双精度变量. 一般地: 单精度占4字节内存单元 字节内存单元; 一般地 单精度占 字节内存单元 双精度占8字节内存单元 双精度占 字节内存单元. 字节内存单元
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言初学者入门讲座第二讲数据类型(3)基本运算符和表达式运算符的种类、优先级和结合性C语言中运算符和表达式数量之多,在高级语言中是少见的。

正是丰富的运算符和表达式使C语言功能十分完善。

这也是C语言的主要特点之一。

C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。

在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。

这种结合性是其它高级语言的运算符所没有的,因此也增加了C语言的复杂性。

运算符的种类C语言的运算符可分为以下几类:1.算术运算符用于各类数值运算。

包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(+ +)、自减(--)共七种。

2.关系运算符用于比较运算。

包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。

3.逻辑运算符用于逻辑运算。

包括与(&&)、或(||)、非(!)三种。

4.位操作运算符参与运算的量,按二进制位进行运算。

包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

5.赋值运算符用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。

6.条件运算符这是一个三目运算符,用于条件求值(?:)。

7.逗号运算符用于把若干表达式组合成一个表达式(,)。

8.指针运算符用于取内容(*)和取地址(&)二种运算。

9.求字节数运算符用于计算数据类型所占的字节数(sizeof)。

10.特殊运算符有括号(),下标[],成员(→,.)等几种。

优先级和结合性C语言中,运算符的运算优先级共分为15级。

1级最高,15级最低。

在表达式中,优先级较高的先于优先级较低的进行运算。

而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。

C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。

例如算术运算符的结合性是自左至右,即先左后右。

如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。

这种自左至右的结合方向就称为“左结合性”。

而自右至左的结合方向称为“右结合性”。

最典型的右结合性运算符是赋值运算符。

如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。

C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。

算术运算符和算术表达式基本的算术运算符1.加法运算符“+”加法运算符为双目运算符,即应有两个量参与加法运算。

如a+b,4+ 8等。

具有右结合性。

2.减法运算符“-”减法运算符为双目运算符。

但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。

3.乘法运算符“*”双目运算,具有左结合性。

4.除法运算符“/”双目运算具有左结合性。

参与运算量均为整型时,结果也为整型,舍去小数。

如果运算量中有一个是实型,则结果为双精度实型。

void main(){printf("\n\n%d,%d\n",20/7,-20/7);printf("%f,%f\n",20.0/7,-20.0/7);}双目运算具有左结合性。

参与运算量均为整型时,结果也为整型,舍去小数。

如果运算量中有一个是实型,则结果为双精度实型。

printf("\n\n%d,%d\n",20/7,-20/7);printf("%f,%f\n",20.0/7,-20.0/7);本例中,20/7,-20/7的结果均为整型,小数全部舍去。

而20.0/7和-20.0/7由于有实数参与运算,因此结果也为实型。

5.求余运算符(模运算符)“%”双目运算,具有左结合性。

要求参与运算的量均为整型。

求余运算的结果等于两数相除后的余数。

void main(){printf("%d\n",100%3);}双目运算,具有左结合性。

求余运算符% 要求参与运算的量均为整型。

本例输出100除以3所得的余数1。

自增1,自减1运算符自增1运算符记为“++”,其功能是使变量的值自增1。

自减1运算符记为“--”,其功能是使变量值自减1。

自增1,自减1运算符均为单目运算,都具有右结合性。

可有以下几种形式: ++i i自增1后再参与其它运算。

--i i自减1后再参与其它运算。

i++ i参与运算后,i的值再自增1。

i-- i参与运算后,i的值再自减1。

在理解和使用上容易出错的是i++和i--。

特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细分析。

void main(){int i=8;printf("%d\n",++i);printf("%d\n",--i);printf("%d\n",i++);printf("%d\n",i--);printf("%d\n",-i++);printf("%d\n",-i--);} i<--8i<--i+1i<--i-1i<--i+1i<--i-1i<--i+1i<--i-1 int i=8;printf("%d\n",++i);printf("%d\n",--i);printf("%d\n",i++);printf("%d\n",i--);printf("%d\n",-i++);printf("%d\n",-i--);i的初值为8第2行i加1后输出故为9;第3行减1后输出故为8;第4行输出i为8之后再加1(为9);第5行输出i为9之后再减1(为8) ;第6行输出-8之后再加1(为9);第7行输出-9之后再减1(为8)void main(){int i=5,j=5,p,q;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);printf("%d,%d,%d,%d",p,q,i,j);}i<--5,j<--5,p<--0,q<--0i+i+i--->p,i+1-->i,i+1-->i,i+1-->ij+1->j,j+1->j,j+1->j,j+j+j->q int i=5,j=5,p,q;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。

然后i再自增1三次相当于加3故i的最后值为8。

而对于q 的值则不然,q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。

算术表达式表达式是由常量、变量、函数和运算符组合起来的式子。

一个表达式有一个值及其类型,它们等于计算表达式所得结果的值和类型。

表达式求值按运算符的优先级和结合性规定的顺序进行。

单个的常量、变量、函数可以看作是表达式的特例。

算术表达式是由算术运算符和括号连接起来的式子,以下是算术表达式的例子:a+b (a*2)/c (x+r)*8-(a+b)/7 ++i sin(x)+sin(y) (++i)-(j++)+(k--)赋值运算符和赋值表达式简单赋值运算符和表达式,简单赋值运算符记为“=”。

由“= ”连接的式子称为赋值表达式。

其一般形式为:变量=表达式例如:x=a+bw=sin(a)+sin(b)y=i+++--j 赋值表达式的功能是计算表达式的值再赋予左边的变量。

赋值运算符具有右结合性。

因此:a=b=c=5可理解为a=(b=(c=5))在其它高级语言中,赋值构成了一个语句,称为赋值语句。

而在C中,把“=”定义为运算符,从而组成赋值表达式。

凡是表达式可以出现的地方均可出现赋值表达式。

例如,式子x=(a=5)+(b=8)是合法的。

它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x ,故x应等于13。

在C语言中也可以组成赋值语句,按照C语言规定,任何表达式在其未尾加上分号就构成为语句。

因此如x=8;a=b=c=5;都是赋值语句,在前面各例中我们已大量使用过了。

如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。

具体规定如下:1.实型赋予整型,舍去小数部分。

前面的例2.9已经说明了这种情况。

2.整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。

3.字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII 码值放到整型量的低八位中,高八位为0。

4.整型赋予字符型,只把低八位赋予字符量。

void main(){int a,b=322;float x,y=8.88;char c1='k',c2;a=y;x=b;a=c1;c2=b;printf("%d,%f,%d,%c",a,x,a,c2);}int a,b=322;float x,y=8.88;char c1='k',c2;printf("%d,%f,%d,%c",a=y,x=b,a=c1,c2=b);本例表明了上述赋值运算中类型转换的规则。

a为整型,赋予实型量y值8 88后只取整数8。

x为实型,赋予整型量b值322,后增加了小数部分。

字符型量c1赋予a变为整型,整型量b赋予c2 后取其低八位成为字符型(b的低八位为01000010,即十进制66,按ASCII码对应于字符B)。

复合赋值符及表达式在赋值符“=”之前加上其它二目运算符可构成复合赋值符。

如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。

构成复合赋值表达式的一般形式为:变量双目运算符=表达式它等效于变量=变量运算符表达式例如:a+=5 等价于a=a+5x*=y+7 等价于x=x*(y+7)r%=p 等价于r=r%p复合赋值符这种写法,对初学者可能不习惯,但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。

逗号运算符和逗号表达式在逗号运算符C语言中逗号“,”也是一种运算符,称为逗号运算符。

相关文档
最新文档