第三章 数据类型、运算符与表达式
C语言程序设计教案第3讲 数据类型、运算符与表达式

<
>
2,实型变量的分类
说明: C并没有具体规定每种类型的长度 并没有具体规定每种类型的长度, 说明:ANSI C并没有具体规定每种类型的长度,精度和数值 范围.下面是常用的C 范围.下面是常用的C编译系统的情况 类 型 字节数 有效数字 最小取值范围 float 4 6~7 -3.4*10-38~ 3.4*1038 double 8 15~16 -1.7*10-308~ 1.7*10308 long double 16 18~19 -1.2*10-4932~1.2*104932
8
取反
<
>
2.
整型变量分类
基本类型: 基本类型:int 根据数值的范围分为: , 根据数值的范围分为:int,short,long , 根据有无符号(singed/unsigned)及范围可分: 及范围可分: 根据有无符号 及范围可分
类 型 举例: 举例: [signed] int unsigned [int] [signed] short [int] unsigned short [int] [signed] long [int] unsinged long [int]
C 数 据 类 型
构造类型 指针类型 空类型 void
定义类型 typedef
<
>
2
2.2 常量与变量
一,标识符
定义:用来标识变量名,符号常量名, 定义:用来标识变量名,符号常量名,函数 数组名,类型名, 名,数组名,类型名,文件名的有效字符序 列称为标识符.(即一个名字) .(即一个名字 列称为标识符.(即一个名字) 使用规则
32767,32767,-32768,8
<
c语言程序设计第三章运算符与表达式

第三章运算符和表达式3.1 运算符和表达式概述使用运算符可以对运算对象(包括常量和变量)进行计算以得到计算结果。
用运算符将运算对象连接成一个符合C语言语法规则的式称为表达式。
另外,C语言中的表达式是可以嵌套的,即简单表达式经过运算符连接后还可以形成更为复杂的表达式。
根据运算符所连接的运算对象(操作数)的个数,可以将C语言中的运算符分为三类:(1) 单目(一元)运算符:只连接一个操作数的运算符。
(2) 双目(二元)运算符:带有两个操作数的运算符。
(3) 三目(三元)运算符:同时对三个操作数进行计算的运算符。
C语言中的表达式可以分为三类:(1) 单个常量或者单个变量是最简单的表达式。
(2) 带有运算符的表达式。
(3) 函数调用。
任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。
所以运算对象、运算符和运算结果是运算的三大要素。
3.2 算术运算符和算术表达式一、基本算术运算符和简单算术表达式1. 基本算术运算符C语言为用户提供的基本算术运算符包括:+(加)、-(减)、*(乘),/(除)、%(求余),这些运算符都是双目运算符,也即在生成算术表达式的时,基本算术运算符左右两侧都必须出现运算对象。
2. 简单算术表达式当用基本算术运算符去连接常量或者变量时,就形成简单算术表达式。
简单算术表达式的基本形式:data1 op data2。
data1和data2表示某个常量或者变量,op代表上述5个基本算术运算符之一。
假设有变量定义:int a=20,b=-5;则a+b、a-b、a*-2、20/-b、20%6、a%b等都是简单算术表达式。
3. 基本算术运算符使用说明(1) +、-、*,/既可以连接整型数据,也可以连接实型数据。
当参与这4个运算符的运算对象都是整型数据时,得到整型数据运算结果;否则表示浮点运算。
例如,int a=15,b=2;则a*b等于30,而a/b等于7;a*2.0等于30.0,而a/2.0等于7.5。
C语言课件第三章

三、 自增、自减运算符 ++ --
++、- -运算符的作用是使变量的值加1或减1
1)该运算符为单目运算符,其运算对象只能是 变量,不能为常量或者表达式。 例如: i++ 、x- - 都是正确的 5++ 、(x+y)++ 都是错误的
2)该运算符作前缀、后缀都可以 例如 i++、++i、i- - 、- -i 都是正确的
3)对变量而言 i++ 或者++i都相当于i=i+1 i- -或者- -i都相当于i=i-1
例如: main( ) { int i=3 , j=3; +i+++i; j---j;; printf (“%d, %d\n”, i, j ); }
运行结果:4,2
4)但如果作为表达式,前缀和后缀则不同: 后缀:先取值再运算(i++,先取i值,i再自加) 前缀:先运算再取值(++i,i先自加,再取i值)
2)强制类型转换运算符优先级高于算术运算符
float x=3.6; int y; y=(int)x%3+2;
x = ?3.6 y=?2
计算下列表达式的值 设 x=2.5, a=7,y=4.7
x+a%3 * (int)(7x7+.2y ) % 2 / 4
设 a=2,b=3,x=3.5,y=2.5
(float5).(0a+b )/2+(int3)(x)%(int2)(y)
例如: main() { int i=3; printf(“%d\n”+, +i+i+ ); printf(“%d”, i ); }
3 数据类型、运算符和表达式

三、整型数据
3.1.整型常量 整型常量即整常数按不同的进制区分, 整型常量即整常数按不同的进制区分 , 整型常数 有三种表示方法: 有三种表示方法:
十进制数: 以非0 220, 560, 十进制数: 以非0开始的数 如:220, -560, 45900 八进制数: 06; 0106, 八进制数: 以0开始的数 如:06; 0106, 十六进制数: 十六进制数: 以0X或0x开始的数 如:0X0D, 0XFF, 0x4e
一般情况下,符号常量名用大写、变量用小写。 一般情况下,符号常量名用大写、变量用小写。
3、符号常量的声明和使用 一般放在程序的前端, <…>在一块: 一般放在程序的前端,与#include < >在一块: #define 符号常量名 值 如:#define Zero 0 好处: 好处: 含义清楚 (#define Second 60) (#define (#define 一改全改 (#define PI 3.14)
3. 整型变量的溢出
main(){ i,j; int i,j; unsigned k,l,m; k,l,m; i=32767 32767; i=32767; j=i+1 j=i+1; l=65535 65535u l=65535u; m=l+2 m=l+2; printf("j=%d\n",j); printf("j=% n",j); printf("l=% n",l); printf("l=%u\n",l); printf("m=% n",m); printf("m=%u\n",m); }
3.2、整型变量 整型变量的分类:加上不同的修饰符 1 . 整型变量的分类 : 加上不同的修饰 符 , 整型变 量有以下几种类型; 量有以下几种类型; C 语言标准没有规定整型变量在计算机内存中所 占的字节数,它与具体的机器和操作系统有关: 占的字节数,它与具体的机器和操作系统有关:
3 数据类型.运算符与表达式

C语言程序设计
第6页
符号常量
一般来说,下列两种情况用符号常量比较方便。 1)当某一常数在程序中多处出现时,可事先定义一个符 号常量。 2)有时,程序中的常数是有意义的,但写一个具体数字,程 序的阅读者则很难明白该常数的意义,此时可定义一个符 号常量。 例如: # define PI 3.1415926 注意:1)表示常量的标识符一般用大写 2)不能给符号常量赋值 PI=6; 错误 思考题:使用符号常量的好处? 含义清晰;一改全改
C语言程序设计
第14页
3.4 实型数据 3.4.1 实型常量
注意:1)没有unsigned和signed 之分。 2)实型常量没有单、双精度数之分;但可以赋给 一个float型或double型变量。赋值时要注意有效 数字位数。 float a; a=12345.6789 (只能接受前7位) 3)C编译系统将浮点型常量作为双精度来处理
C语言程序设计
第11页
3.3.2 整型变量
有三种整型变量(int、short int、long int): 但也可以将变量的类型定义为无符号(unsigned int) 1)有符号基本整型:signed int signed int 2)无符号基本整型:unsigned int 3)有符号短整型: signed short int signed int 4)无符号短整型: unsigned short int unsigned short 5)有符号长整型: signed long int signed long long 6)无符号长整型: unsigned long int unsigned long
THE C PROGRAMMING LANGUAGE
第三章数据类型、运算符与表达式

设x的值为4,则表达式y=(++x)+(++x)+(++x)后,y的值是(D)。
A.12B.18C.16D.21下列数据中,为字符的是(D)。
A.‘AB’B."A"C.HowD.‘A'以下符号中,合法的用户标识符是(D)。
A. -pB. intC. 3abD. _xt_以下实型常量中,符合C语言语法的是(A)。
A. .5E-3B. 1.2E0.5C. E15D. 3.14.159E若有说明和语句:int a=5,b=6;b*=a+1;则b的值为(D)A. 5B. 6C. 31D. 36设C 语言中,int 类型数据占4个字节,则short 类型数据占(C)。
A.1个字节B.2个字节C.4个字节D.8个字节若x=3.5,a=2,y=2.5,b=3则表达式(float)(a+b)/2+(int)x%(int)y的值是()。
A.1.5B.2.5C.3.5D.2以下选项中不属于C语言的类型的是(D)。
A.signed short intB.unsigned long intC.unsigned intD.long short关于C语言数据类型的叙述,正确的是(C)。
A. 整型不是基本类型B. 数组不是构造类型C. 变量必须先定义后使用D. 不允许使用空类型若a=12,则表达式a-=a的值为(A)。
A. 0B.12C.1D. 24若x=3.5,a=2,y=2.5,b=3则表达式(int)(a+b)/2+(int)x%(int)y的值是(D)。
A. 1.5B. 2.5C. 3D. 3.5若a是数值类型,则逻辑表达式(a==1)&&(a!=1)的值是(C)。
A.1B. 2C. 0D. 不知道a的值,不能确定若char x=97,则变量x对应(A)字符。
A. ‘a’B. ‘A’C. ‘9’D. ‘7’设C语言中,int类型数据占2个字节,则float类型数据占(C)字节。
C语言第3章(谭浩强)

void main( ) { int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\n”,c,d); } 运行结果:a+u=22,b+u=-14 结论:不同类型的整型数据可以进行算 术运算。
位数 16
取值范围 -215-(215-1) -32768—+32767 -32768—+32767
Short [int] Long [int]
短整型 长整型
16 32
16 16 32
Unsinged int 无符号整型 Unsinged short [int] Unsinged long [int] 无符号短整 型 无符号长整 型
8
④大写字母与小写字母意义不同, 被认为是两个不同的字符。一般变 量名用小写字母表示。 注意:常量名常用大写、变量名常 用小写!
year Day a_12 _abcdef #123 .com $100 1999Y a=b 1_2_3 +abcedfghi ∏ -5 等
9
3、变量要先定义后使用
可以改为double型) void main( ) {float x;double y; x=123456.789;y=123456.789; printf(“%f, %f”,x,y);} 结果为: 123456.789062, 123456.789000
29
§3.5
字符型数据
一、字符常量 1、在C语言中字符型常量是用单引号括 起来的一个字符。 如:’a‟、’A‟、’3‟、’?‟、’ ’、 ’$‟等。 2、以‚\”开头的转义字符,如\n不代表 字母n,而是代表换行。
数据类型及运算

内存中存储形式
负数的补码 =反码+1 =原码取反+1
内存中存储形式 10
A B
整型数据在内存中的存储形式
----以有符号 2 字节整型为例 32767(215-1)的 16位编码 原码:01111111 11111111 反码:01111111 11111111 补码:01111111 11111111 内存中存储形式 -32767(1-215)的 16位编码 原码:11111111 11111111 反码:10000000 00000000 补码:10000000 00000001 内存中存储形式
A B
空类型void 3
3.2~3.3(1) 常量与简单变量–以数值型为例
• 常量: 在程序运行中,其值不变的量,如: 23.7, - 67 等。 • 变量: 在程序运行过程中,其值可以改变的量, 在内存中占据一定的存储单元。
变量a 150 50
A B
4
一、两类常量
常数常量和符号常量 常数常量 如-10, 3.14 符号常量: 用标识符表示的常量。符号常量用 预处理(宏定义)命令定义在函数之外。 定义形式: A B
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章数据类型、运算符与表达式一、选择题1.以下选项中合法的c语言标识符是。
A) long B) _2Test C)3Dmax D)A.dat2.以下不能定义为C语言标识符的是。
A) scanf B) V oid C)int D)_3com_3.在以下各组标识符中,合法的c语言标识符是①;②;③。
①A)B0l B) table_l C) 0_t D) k%int t*.1 W10 point②A)Fast_ B) void C)pb1 D) <book>Fast+Big Abs fabs beep③A)xy_ B) longdouble C)*p D)CHAR变量l signed history Flaut4.在以下各组标识符中,合法的c语言标识是①;②。
①A)print B) i’am C)Pxg D)Cppoodb one-half line# powaBc 3pai His.age while②A)_maln B)If C)txt D)intenclude _max REAL k_2sln turbo 3COM _0015.以下不能定义为c语言标识符的是。
A)_1234_ B)2_int_ C)int_2_ D)_1_26.以下不能定义为c语言标识符的是。
A) Main B) _0 C)_int D)sizeof7.以下叙述中错误的是。
A) c语言的标识符允许使用保留字B) c语言的标识符应尽量做到“见其名知其意”c) c语言的标识符必须以字母或下划线开头D) c语言的标识符中,大、小写字母代表不同标识8.以下叙述中正确的是。
A) 可以把define和if定义为C语言标识符B) 可以把define定义为C语言标识符,但不能把if定义为c语言标识符C) 可以把if定义为c语言标识符,但不能把define定义为c语言标识符D) define和if都不能定义为c语言标识符9.下面不属于c语言保留字的是。
A) char B) while C)typedef D)look10.下面属于c语言保留字的是。
A) define B) include C)main D)enum11. 是c语言的数据类型说明保留字。
A) Float B) signed C)integer D)Char12.不合法的C语言字符常量是。
A) '\2' B) " " C) ' ' D) "\483"13.合法的c语言长整型常量是。
A) 5876 B) 0L C)2.0E10 D)(long)5876214.下列选项中,均是合法的c语言整型常量的是。
A) 160 B) -0xcdf C)-01 D) -0x48a-0xffff 0la 986,012 2e50011 0xe 0668 0x15.十进制数8的C语言八进制数常量是。
A) 10 B) 010 C)8 D) 0816.在C语言中,029是一个。
A) 八进制数B) 十六进制数C)十进制数D) 非法数17.以下选项中可作为c语言整数的是。
A) 10110B B) 0386 C)0xffaa D) x2a218.c语言中将-8赋值给无符号字符型,则它的内存数据形式为。
A) 11111000 B) 10001000 C) 00001000 D) 1111011119. 下列选项中,均是合法的c语言实型常量的是。
A) +1le+1 B) -.60 C) l 23e D)-e35e-9.4 12e-4 1.2e-.4 .8e-403e2 -8e5 +2e-l 5.e-020.以下选项中正确的c语言实型常量是。
A) 0 B) -10 C)1.9×102D)0.1921.以下选项中正确的c语言实型常量是。
A) 1.2e0.5 B) 3.14159E C).5E-3 D)E1522.以下选项中可作为c语言数值常量的是。
A) -80. B) -080 C)-8e1.0 D)-80.0e23.在c语言中,以下不合法的数值常量是。
A) 011 B) 1e1 C)8.0e0.5 D)00024. 是非法的c语言转义字符。
A) '\b' B) '\0xf' C) '\037' D) '\''25.下面转义字符中错误的是。
A) '\000' D) '\14' C) '\x111' D) '\2'26.下面转义字符中错误的是。
A) '\\' D) '\"' C) '\86' D) '\0'27.以下选项中不是c语言常量。
A) e-2 B) 012 C) "a" D) '\n'28.以下选项中不是合法c语言数据类型。
A) signed short int B) unsigned long intC) unsigned int D) long short29.设char a='\70';则变量a 。
A) 包含1个字符B) 包含2个字符c) 包含3个字符D)说明不合法30.对于char cx='\039';正确的判断是。
A) 不合法B) cx的值是'\03' c) cx的值为四个字符D) cx的值为三个字符31. 已知short x=0xabcde;则x的结果是。
A) 赋值非法B) 不确定C) abcd D) bcde32.下列变量定义及赋初值中,合法的是。
A) short _a=1-.1e-1; B) double b=1+5e2.5;C) long do=0xfdaL; D) float 2_and=l-e-3;33.假设某表达式中包含int,long,unsigned,char类型的数据,则表达式最后的运算结果是____________类型。
A) int B) long C) uns igned D) char34.在c语言中,要求参加运算的数必须是整数的运算符是。
A) /B) * C) %D) =35.下列运算符中,优先级最高的是。
A) ( ) B) %C)++ D) ,36.若int k=7, x=12;则值为3的表达式是。
A) x%=(k%=5) B) x%=(k-k%5) C) x%=k-k%5 D) (x%=k)-(k%=5)37.设有int x=11;则表达式(x++*1/3)的值是。
A) 3 B)4C) 11 D)1238.对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,是正确的。
A) 语法错误B) f为5.0 C) f为0.0 D) f为2.039.设变量n为float类型,m为int型,则以下表达式能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算。
A) n=(n*100+0.5)/l00.0 B) m=n*100+0.5, n=m/100.0C) n=n*100+0.5/100.0 D) n=(n/100+0.5)*100.040.设以下变量均为int类型,则值不等于7的表达式是。
A) (x=y=6, x+y, x+1) B) (x=y=6, x+y, y+1)C) (x=6, x+1, y=6, x+y) D) (y=6, y+1, x=y, x+1)41.假定有变量定义:int k=6, x=12;则能使x、k值为5、6的表达式是。
A) x%=++k%l0 B) x%=k+k%5 C) x-=++k%5 D) x-=k++%542.在Turbo C 2.0中,若定义long a;则能给变量a赋值40000的正确语句是。
A) a=20000+20000; B) a=4000*10; C) a=30000+10000; D) a=4000L*10;43.设float m=4.0,n=4.0;使变量m值为10.0的表达式是。
A ) m-=n*2.5 B) m/=n+9 C) m*=n-6 D)m+=n+244.设int i=0,j=0;以下使变量i值为4的表达式是。
A) i=3, (j++)+i, i=j+1 B) j=i=(i=2)*2 C) i*=j%=(j=6)+(i=4) D)j+=i+=j+=245.若变量a为int类型,且其值为3,则执行表达式a+=a-=a*a后,a的值是。
A) -3 B) 9 C) -12 D) 646.表达式3.6-5/241.2+5%2的值是。
A) 4.3 B) 4.8 C) 3.3 D) 3.847.若已定义x和y为double类型,则表达式x=l, y=x+3/2的值是。
A) l B) 2 C) 2.0 D) 2.548.有以下程序段:int c1=1, c2=2, c3;c3=1/c2*c1;执行后c3的值是。
A) 0 B) 0.5 C) l D) 249.设int n=20, i=4; 则赋值运算n%=i+l执行后,n的值是。
A) 0 B) l C) 2 D) 350.有以下程序段:int m=3, n=4, x;x=-m++;x=x+8/++n;执行后x 的值是 。
A) 3 B) 5 C) -1 D) -251. sizeof(long)的值 。
A) 1 B) 2 C) 3 D)452.设char c=20;则sizeof (c)的结果是 。
A) 1 B) 12 C) l 20 D)2053.表达式x*=y+2还可以写为 。
A) x=x*y+2 B) x=2+y*x C) x=x*(y+2 ) D) x=y+2*x54.若变量已正确定义并贼值,下面符合c 语言语法的表达式是 。
A) a:=b+l B) a=b=c+2 C) int(18.5%3) D) a=a+7=c+b55.以下变量定义和赋初值错误的是 。
A) int n1=n2=l 0; B) char c=32;C) float f=3*100+2.2; D) double x=12.3E2;56.已定义ch 为字符型变量,以下赋值表达式中错误的是 。
A) ch='\' B) ch=62+3 C) ch=NULL D) ch='\xaa'57.已定义c 为字符型变量,以下赋值表达式中正确的是 。
A) c='97' B) c="97" C) c=97 D) c='\97'58.以下选项中,与k=n++完全等价的表达式是 。
A) k=n, n=n+1 B) n=n+1, k=n C) k=++n D) k+=n+l59.若有以下定义;int a=0; double b=1.25; char c='A';#define d 2则下面表达式中错误的是 。