1、第6章 C语言程序设计基础,6.1 C语言简介 6.2 C语言程序的基本结构 6.3 C语言的基本数据类型 6.4 运算符与表达式 6.5 数据类型的转换 6.6 综合举例,1,6.1 C语言简介,为什么学C语言? 世界上顶尖的计算机高手,其中比较著名的有李纳斯、丹尼斯利齐、沃兹尼克、肯汤普生等。对初学者来说,学好C语言,对理解计算机软件的工作过程,以及今后从事软件开发、学习其它软件都有非常大的帮助。,2,Dennis M Ritchie Ken Thompson,6.1 C语言简介,3,6.1 C语言简介,6.1.1 C语言的发展过程 C语言诞生于1972年,由美国电话电报公司(AT&T)贝
2、尔实验室的D.M.Ritchie设计发明的 。 1978年B. W.Kernighan和D. M.Ritchie(简称K&R)合著了The C Programming Language一书,这本书成为后来广泛使用的C语言的基础,被称为标准C。 为统一C语言版本,1983年美国国家标准局(American National Standards Institute,简称ANSI)成立了一个委员会,来制定C语言标准。,4,6.1.1 C语言的发展过程,1989年C语言标准被批准,被称为ANSI X3.159-1989 “Programming Language C“。这个版本的C语言标准通常被称为A
3、NSI C。目前,几乎所有的开发工具都支持ANSI C标准,它是C语言用得最广泛的一个标准版本。 常用的C语言IDE(集成开发环境)有Microsoft Visual C+、CodeBlocks、Turbo C、等。 ANSI C 关键字,5,6.1.2 C语言的特点,6.1.2 C语言的特点 1. C是高级语言 2. C是结构式语言 3. C语言功能齐全 4. C语言适用范围大 5. C语言简洁、紧凑,使用方便、灵活。 6. 运算符丰富。 7. 数据结构类型丰富。 8. C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。 9.生成目标代码
4、质量高,程序执行效率高。C语言描述问题比汇编语言迅速,工作量小。 10.与汇编语言相比,用C语言写的程序可移植性好。,6,C语言的不足 (1) C语言类型检查不严格,表达式容易出现二义性,不能自动检查数组下标越界等。 (2) C语言缺乏支持代码重用的语言结构。 (3) C语言不适合开发大型应用程序。 C语言的关键字,7,6.1.2 C语言的特点,解释1:C+是由于开发大型应用软件的需要而产生的,并不是所有的人都要去编写大型软件。 解释2:面向对象的基础是面向过程。C+是面向对象的语言,C是面向过程的;C+学起来比C语言困难得多,所以不太适合程序设计的初学者。,问题:既然有了面向对象的C+语言,
5、为什么还要学习C语言?,8,6.1.2 C语言的特点,6.2 C语言程序的基本结构,6.2.1 C语言程序的构成 6.2.2语言源程序的结构特点 6.2.3 C语言程序的书写格式 6.2.4 C语言程序的开发过程,9,6.2 C语言程序的基本结构,一个完整的语言程序由一个或多个具有相对独立功能的程序模块组成,这样的程序模块称为“函数”。因此,函数是程序的基本单位。,6.2.1 C语言程序框架,10,11,C程序的框架,/ Sample1.c 1 #include /预编译命令,将标准输入输出函数/作为头文件包扩到用户源文件中 2 #include /预编译命令,将系统提供的数学函数/作为头文件
6、包扩到用户源文件中 3 void main( ) /主函数,名为main,/void是类型说明符(无返回值) 4 /函数体.开始 5 float a,b,c; /声明部分.定义变量类型 6 b=30.0; /执行部分.赋值语句 7 a=sin(b*3.14159/180); /执行部分.赋值语句 8 printf(“%fn“,a); /执行部分.输出语句 9 /函数体.结束,2018/10/13,12,6.2 C语言程序的基本结构,例6.1空操作(无任何操作)。main() 函数体 分析: 1.一个 C语言源程序中有且只能有一个主函数,main()函数,其后的一对圆括号中可以带参数,也可以是空
7、的,但括号不能省略。 2. 程序都从调用main()开始执行。 3. 用“ ”括起来的部分称为函数体,6.2.1 C语言程序的构成,例6.2 编写一程序,其功能是在屏幕中输出如下字符串:Hello,World!#include int main() printf(“Hello,World!n“);return 0; ,预处理命令,用于将各头文件包含到程序中,其后不能加分号,输入和输出由标准库中的一组函数来实现的。函数被定义在头文件 stdio.h中。,n是用转义字符,表示换行,13,运行程序的步骤和方法,上机输入与编辑源程序 对源程序进行编译 与库函数连接 运行目标程序,14,VC编译器,Vi
8、sual C +6.0常用功能 文件(File),编辑(Edit),查看(View),插入(Insert),项目(Project),构建(Build),工具(Tools), 窗口(Window)和帮助(Help),15,VC上机操作步骤,1 新建并编辑一个源程序 “文件(File)| 新建(New)” C+ Source File -文件扩展名 .C (.Cpp) 文件|保存 2 编译Ctrl+F7 3 连接 F7 4 运行Ctrl+F5 5 单步运行 F11 6 选择文件(File)关闭工作区(Close Workspace ) 7 VC强行结束:任务管理器结束程序,16,回顾,1 C语言的
9、基础知识 2 C语言程序的构成#include int main() printf(“Hello,World!n“);return 0; ,17,本节主要内容,1 C语言程序构成 2 数据类型 3 运算符与表达式,18,两个数的加法 #include main( ) float a,b,c; a=111111.111; b=222222.222; c=a+b; printf(“c=%fn“,c); ,19,6.2.1 C语言程序的构成,6.2.1 C语言程序的构成,例6.3 编写一程序,其功能是求出给定两个数的和。 /* My program */ #include int add(int a
10、,int b) return (a+b);void main() int x,y,z;printf(“Input x and y:“);scanf(“%d%d“,20,6.2.1 C语言程序的构成,例6.4编写一程序,其功能是求出给定两个数的最小值。 #include void main () int a,b,c; int min(int,int); /*对被调函数max()的声明*/ printf(“input a,b:“); scanf(“%d,%d“, ,21,6.2.2语言源程序的结构特点,1. C程序的基本单位是函数,一个C程序由一个或若干个函数构成。程序中有且只能有一个主函数,即m
11、ain()函数。C程序总是从main()函数开始执行。 2.C程序主要有两种文件形式:头文件和源文件。头文件一般以“.h”为文件扩展名,通常被“include”(包含)在源程序文件的开头,所以也称为“包含文件”;源文件通常以“.c”为文件扩展名。,22,6.2.2语言源程序的结构特点,3.函数定义由两部分组成:函数头和函数体。函数头包括函数名、函数类型、函数参数名和参数类型。 4. C语言程序书写自由,一行内可以写一条或多条语句。 5.C语言程序大小写是有区别的。 6.注释语句主要用于说明变量的含义和程序段的功能等,它不参与程序的运行。 7.每一个说明,每一个语句都必须以分号结尾。但预处理命令
12、、函数头和花括号“”之后不能加分号。,23,6.2.3 C语言程序的书写格式,1.一个说明或一个语句占一行。 2.用 括起来的部分,通常表示了程序的某一层次结构。一般与该结构语句的第一个字母对齐,并单独占一行。 3.低一层次的语句或说明可比高一层次的语句或说明缩进若干空格后书写,以便看起来更加清晰,增加程序的可读性。 4.空白符只在字符常量和字符串常量中起作用。在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。,24,2018/10/13,25,6.2.4 C语言程序的开发过程,1.编辑:输入C语言源程序,并以.c扩展名存入文件系统。 2
13、.编译:发现源程序中的语法错误,若有错,系统将其“错误信息”显示在屏幕上,用户可以根据指出的错误信息,对源程序进行修改,修改后再重新编译,直到编译无错为止。编译后生成机器指令程序,被称为目标程序,此目标程序名与其源程序同名,其扩展名为.obj。,6.3 C语言的基本数据类型,6.3.1 C的数据类型 6.3.2标识符、常量与变量 6.3.3整型数据 6.3.4实型数据 6.3.5字符型数据,26,6.3.1 C的数据类型,例6.5编写一程序,其功能是在屏幕上输出不同数据。 #include int main() int a;float b;char c;a = 5;b = 2.5;c = A;
14、printf(“%d,%f,%cn“, a,b,c);return 0;,27,C语言数据类型的分类,28,6.3.2标识符、常量与变量,标识符 C语言中标识符,尤其用户标识符的命名规则如下: (1)所有标识符必须由字母(a-z, A-Z)或下划线(_)开头。 (2)标识符的其它部分可以用字母、下划线或数字(0-9)组成。 (3)大小写字母表示不同意义, 即代表不同的标识符,如xy、Xy、xY是三种不同的标识符。 (4)用户标识符不能使用关键字。 (5)用户标识符应做到“见名知义”。,29,6.3.2标识符、常量与变量,2.常量 在程序运行中,其值不能被改变的量称为常量。常量有5种类型:其中整
15、型常量和实型常量又称为数值型常量。 (1)整型常量:用不带小数点的数字表示。 (2)实型常量:用带小数点的数字表示。 (3)字符型常量:用带有单引号的字符表示。 (4)字符串常量:用双引号括起来的一个或一串字符 (5)符号常量:由宏定义“#define”定义的常量,在C程序中可用标识符代表一个常量。符号常量在使用之前必须先定义,其一般形式为:#define 标识符 常量,30,6.3.2标识符、常量与变量,例6.6编写一程序,其功能是已知球的半径,求球的表面积。 #include #define PI 3.14159 #define R 2 void main() double area;ar
16、ea = 4*PI*R*R;printf(“%6.2lfn“, area); ,31,6.3.2标识符、常量与变量,3.变量 程序执行过程中,其值可以被改变的量称为变量。变量具有三要素:变量名、变量类型和变量值。 一条变量定义语句由数据类型和其后的一个或多个变量名组成,其定义形式如下: 数据类型 变量名1,变量名2; 在定义变量的同时,也可以对变量进行初始化,它的一般形式如下: 数据类型 变量名1=初值1,变量名2=初值2;,32,6.3.3整型数据,1.整型常量 整型常量即整常数。C语言整常数可用以下三种形式表示: (1)十进制整常数:十进制整常数没有前缀。其数码为09。 (2)八进制整常数
17、:八进制整常数必须以数字0开头,即以0作为八进制数的前缀。数码取值为07。八进制数通常是无符号数。 (3)十六进制整常数:十六进制整常数的前缀由数字0和字符x组成,0X或0x。其数码取值为09,AF或af。 如果使用长整型数来表示,用后缀字符“L”或“l”来表示 无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。,33,6.3.3整型数据,例6.7编写一程序,其功能是演示整型数据的三种进制表示形式。 #include void main() int a=0123; /*八进制*/int b=0x123; /*十六进制*/printf(“a=%d,b=%dn“,a,b); /*十
18、进制输出*/ ,34,6.3.3整型数据,2.整型变量 (1)整型数据在存储器中的存放形式 计算机存储器中存放整型数据时,是用该整型数据的补码进行存储的。1的原码为:0000 0001;-1的原码为1000 0001 1的反码为:0000 0001;-1的反码为1111 1110 1的补码为:0000 0001;-1的补码为1111 1111,35,6.3.3整型数据,(2)整型变量的分类 由于不同的编译系统或计算机系统对整型变量所占用的字节数有不同的规定,可以将整型变量分为以下四类: 基本型:类型说明符为int,在存储器中占4个字节。 短整型:类型说明符为short int或short,在存
19、储器中占2个字节。 长整型:类型说明符为long int或long,在存储器中占4个字节。 无符号型:类型说明符为unsigned。 无符号型又可与上述三种类型匹配而构成: 无符号基本型:类型说明符为unsigned int或unsigned。 无符号短整型:类型说明符为unsigned short。 无符号长整型:类型说明符为unsigned long。,36,6.3.3整型数据,例6.8编写一程序,演示整型变量的定义与使用。 #include void main() int a,b,c,d; long x,y;x=5; y=6; a=7; b=8;c=x+a; d=y+b;printf(“
20、c=x+a=%d,d=y+b=%dn“,c,d); ,37,6.3.3整型数据,例6.9编写一程序,其功能是演示整型数据的溢出。 #include void main() short x,y;x=32767;y=x+1;printf(“%d,%dn“,x,y);,38,6.3.4实型数据,1 .实型常量 实型常量也称为实数或者浮点数。所有浮点常量都被默认为double。浮点常量有如下两种表示方法: (1)小数:由数字和小数点组成,用小数方式表示的实型常量必须有小数点,可以没有小数位,且小数点的位置不受限制。 (2)指数:由十进制数加阶码标志“E”或“e”以及阶码(只能为整数,可以带符号)组成。
21、,39,6.3.4实型数据,例6.10 编写一程序,其功能是在屏幕上输出实型常量的值。 #include void main() printf(“%fn“,1.23e2);printf(“%fn“,123.);printf(“%fn“,123.F); ,40,6.3.4实型数据,2.实型变量 (1)实型数据在存储器中的存放形式(2)实型变量的分类 实型变量分为:float型、double型。 在V C 6.0中单精度型占4个字节存储空间,只能提供67位有效数字。双精度型占8 个字节存储空间,可提供1516位有效数字。,41,6.3.4实型数据,例6.11 编写一程序,其功能为实型变量的舍入处理
22、。 #include void main() float x,y; double x1,y1;x=987654.321e5; x1=987654.321e5;y=x+10; y1=x1+10; printf(“x=%fn“,x);printf(“y=%fn“,y); printf(“x1=%fn“,x1);printf(“y1=%fn“,y1); ,42,6.3.4实型数据,例6.12 编写一程序,其功能为实型变量的舍入处理。 #include void main() float x; double y;x=66666.66666;y=66666.6666666666666;printf(“%
23、fn%fn“,x,y); ,43,6.3.5字符型数据,1 字符常量及字符串常量 (1)字符型常量 字符型常量代表ASCII码字符集里的一个字符,在程序中用单引号括起来, 一个字符型常量的存储值是该字符集中对应的ASCII编码值,常用字符的ASCII编码值如下:字符AZ的码值是6590,字符az的码值是97122,字符09的码值是4857,空格字符 的ASCII码值32。,44,(2)转义字符 一些不能用符号表示的控制符, 只能用ASCII码值来表示, 以“开头的转义字符序列。常见的以“开头的转义字符如表6-3所示。,45,6.3.5字符型数据,46,6.3.5字符型数据,例6.13 编写一程
24、序,其功能转义字符的使用。 #include void main () printf(“ ab ctderfn“);printf(“hijktLbMn“);,47,6.3.5字符型数据,例6.14 编写一程序,其功能转义字符的使用。 #include void main () int a,b,c;a=0; b=1; c=2;printf(“%dnt%d-%dn%d-%dtb%dn“,a,b,c,a,b,c);,48,6.3.5字符型数据,(3)字符串常量 一般用双引号括起来表示,C语言规定在每一个字符串的结尾加一个字母0作为字符串结束标志。 a在存储器中占一个字节,“a“在存储器中占二个字节。
25、,49,6.3.5字符型数据,2.字符变量 字符变量用来存储字符常量,每个字符变量中只能存放一个字符,即单个字符。 字符变量的类型说明符是char。,50,6.3.5字符型数据,例6.15 编写一程序,其功能向字符变量赋以整数。 #include void main() char ch1,ch2;ch1=120; ch2=121;printf(“%c,%cn”,ch1,ch2);printf(“%d,%dn“,ch1,ch2); ,51,字符az的码值是97122,6.3.5字符型数据,例6.16 编写一程序,其功能把大写字母换成小写字母。#include void main() char c
26、h1,ch2;ch1=A;ch2=B;ch1=ch1+32;ch2=ch2+32;printf(“%c,%cn%d,%dn“,ch1,ch2,ch1,ch2);,52,6.4 运算符与表达式,6.4.1 运算符简介 6.4.2 算术运算符及算术表达式 6.4.3关系运算符及关系表达式 6.4.4逻辑运算符及逻辑表达式 6.4.5赋值运算符及赋值表达式 6.4.6位运算符及其表达式 6.4.7特殊运算符及表达式,53,6.4.1运算符简介,C语言的运算符可以分为以下几类: 1.算术运算符。 2.关系运算符。 3.逻辑运算符。 4.位操作运算符。 5.赋值运算符。 6.条件运算符。 7.逗号运算符
27、。 8.指针运算符。 9.求字节数运算符。 10.特殊运算符。,54,6.4.2 算术运算符及算术表达式,算术运算符分为: 加(+)、减() 乘(*)、除(/) 求余(或称模运算,%) 自增(+)、自减()7种。,55,6.4.2 算术运算符及算术表达式,例6.17 编写一程序,其功能计算两个数的商。 #include void main() printf(“%d,%dn“,29/9,-29/9);printf(“%f,%fn“,29.0/9,-29.0/9);,56,6.4.2 算术运算符及算术表达式,例6.18 编写一程序,其功能计算两个数的余数。 #include void main()
28、 printf(“%d,%dn“,100%2,100%3); ,57,6.4.2 算术运算符及算术表达式,例6.19 编写一程序,其功能是计算自增自减的值。 #include void main() int i=5;printf(“%d,“,+i); printf(“%d,“,-i);printf(“%d,“,i+); printf(“%d,“,i-);printf(“%d,“,-i+); printf(“%d,“,-i-);,58,6.4.2 算术运算符及算术表达式,例6.20 编写一程序,其功能是计算自增自减的值。 #include void main() int x,y; x=1;y=(
29、x+)+(x+);printf(“x=%d,“,x);printf(“y=%dn“,y);,59,6.4.2 算术运算符及算术表达式,表达式是由常量、变量、函数和运算符组合起来的式子。一个表达式有一个值及其类型,它们等于计算表达式所得结果的值和类型。 算术表达式是用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子。 算术运算符的优先级是负值运算符乘除运算符加减运算符。圆括号可用来改变优先级。,60,6.4.2 算术运算符及算术表达式,例6.21 编写一程序,其功能求表达式 的值。 #include void main() double x,y,m,n;x=8; y=2;m=3; n=
30、5;printf(“%fn“,(x+y)/(m+n);,61,6.4.2 算术运算符及算术表达式,例6.22 编写一程序,其功能求表达式-x*(-y+4)/z-1的值。 #include void main() int x,y,z;x=8; y=2; z=3;printf(“%dn“,-x*(-y+4)/z-1);,62,6.4.3关系运算符及关系表达式,1关系运算符 C语言提供6种关系运算符。,63,6.4.3关系运算符及关系表达式,例6.23 编写一程序,其功能求关系表达式的值。 #include void main() char c=h; int i=4,j=5,k=6;float x=
31、2e+2,y=0.2;printf(“%d,%dn“,a+5=k+1);printf(“%d,%dn“,1j5,x-5.25=x+y);printf(“%d,%dn“,i+j+k=-2*j,k=j=i+5);,64,6.4.4逻辑运算符及逻辑表达式,C语言提供三种逻辑运算符: & 逻辑与(相当于“同时”) | 逻辑或(相当于“或者”) ! 逻辑非(相当于“否定”) (1)逻辑非的优先级最高,逻辑与次之,逻辑或最低,即: !(非) &(与) |(或) (2)与其它种类运算符的优先关系 ! 算术运算 关系运算 & | 赋值运算,65,6.4.4逻辑运算符及逻辑表达式,(1)逻辑运算符两侧的操作数,
32、除可以是0和非0的整数外,也可以是其它任何类型的数据,如实型、字符型等。 (2)在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。,66,6.4.4逻辑运算符及逻辑表达式,例6.24 编写一程序,其功能求逻辑表达式的值。 #include void main() char c=h; int i=4,j=5,k=6; float x=2e+2,y=0.2;printf(“%d,%dn“,!x*!y,!x);printf(“%d,%dn“,x|i,67,6.4.5赋值运算符及赋值表达式,赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值
33、赋给一个变量。 赋值表达式的一般形式为: 变量=赋值表达式,68,6.4.5赋值运算符及赋值表达式,如果表达式值的类型,与被赋值变量的类型不一致时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。具体规定如下: 实型赋予整型,舍去小数部分。 整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分。 字符型赋予整型,将字符的ASCII码值放到整型量的低八位中,其他高位为0。 整型赋予字符型,只把低八位赋予字符量。 如果将float类型的变量赋予double类型的变量,只是在float型数据尾部加0延长为double型数据参加运算,然后直接赋值。如果将double型数据转换
34、为float型时,通过截尾数来实现,截断前要进行四舍五入操作。,69,6.4.5赋值运算符及赋值表达式,例6.25 编写一程序,其功能显示赋值运算中类型转换的规则。 #include void main() int a,b=322,c; float x,y=6.5;char c1=k,c2; a=y; x=b; c=c1; c2=b;printf(“%d,%f,%d,%cn“,a,x,c,c2);,70,6.4.5赋值运算符及赋值表达式,复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。 复合赋值表达式的一般格式为: 变量 双目运算符 = 表达式 例6.26 X=2,计算x+=x-=x
35、+x的值,编写一程序,其功能显示复合赋值表达式的结果。 #include void main() int x=2; x+=x-=x+x;printf(“%dn“,x); ,71,本节主要内容,1 位运算符及表达式 2 特殊运算符 3 数据类型的转换 4 程序设计基础,72,6.4.6位运算符及其表达式,73,6.4.6位运算符及其表达式,1.按位与运算 按位与运算符“,74,6.4.6位运算符及其表达式,2.按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的两个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。 例6.28 编写一程序
36、,其功能显示按位或运算的结果。 #include void main() int a=11,b=5,c; c=a|b;printf(“a=%dnb=%dnc=%dn“,a,b,c);,75,6.4.6位运算符及其表达式,3.按位异或运算 按位异或运算符“”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两个对应的二进位相异时,结果为1。参与运算数仍以补码出现。 例6.29 编写一程序,其功能显示按位异或运算的结果。 #include void main() int a=11,b=5,c; c=ab;printf(“a=%dnb=%dnc=%dn“,a,b,c);,76,6.4.6位
37、运算符及其表达式,4.求反运算 求反运算符”为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。 5.左移运算 左移运算符“”是双目运算符。其功能把“ ”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。,77,6.4.6位运算符及其表达式,例6.30 编写一程序,其功能显示按位右移运算的结果。 #include void main() unsigned a=64,b;b=a5; b=b ,78,6.4.6位运算符及其表达式,例6.31 编写一程序,其功能显示按位运算的结果。 #include void main() char a=a,b
38、=b; int p,c,d;p=a; p=(p8;printf(“a=%dnb=%dnc=%dnd=%dn“,a,b,c,d); ,79,6.4.7特殊运算符及表达式,1.逗号运算符 在C语言中逗号“,”也是一种运算符,称为逗号运算符。用它将两个表达式连接起来。逗号表达式的一般形式为表达式1,表达式2 其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。,80,6.4.7特殊运算符及表达式,例6.32 编写一程序,其功能显示逗号表达式的结果。 #include void main() int x, y; x=50;y=(x=x-5, x/5);printf(“x=%d,y
39、=%dn“,x,y);,81,6.4.7特殊运算符及表达式,2.条件运算符 条件运算符是一个三目运算符, 其一般形式是: ?: 运算符的含义是:先求表达式1的值,如果为真, 则求表达式2的值,并把它作为整个表达式的值;如果表达式1的值为假, 则求表达式3的值,并把它作为整个表达式的值。,82,6.4.7特殊运算符及表达式,例6.33 编写一程序,其功能显示条件表达式的结果。 #include void main() int x, y; x=50; y=x70?100:0;printf(“x=%d,y=%dn“,x,y); ,83,6.4.7特殊运算符及表达式,3.sizeof运算符 sizeo
40、f运算符是一个单目运算符, 它返回变量或类型的所占存储空间的字节长度。,84,6.4.7特殊运算符及表达式,例6.34 编写一程序,其功能显示VC6.0各类型变量所占字节长度。 #include void main() printf(“char:%d,“,sizeof(char);printf(“short:%d,“,sizeof(short);printf(“int:%d,“,sizeof(int);printf(“long:%d,“,sizeof(long);printf(“float:%d,“,sizeof(float);printf(“double:%dn“,sizeof(double
41、);,85,6.5数据类型的转换,在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。,86,6.5数据类型的转换,强制类型转换运算符“()”将一个表达式转换成所需类型。强制类型转换的一般形式为:(类型名)(表达式) 注意 (1) (类型名)是运算符,表达式一般用括号括起来。 (2) 经强制类型转换后,得到的是一个所需类型的中间数据,原来变量类型不变,87,例6.35 编写一程序,其功能利用强制类型转换运算符对变量赋值。 #include void main() int i; float x; x=3.6; i=(int)x;printf(“x=%f,i=%dn“,x,i); ,88,