《C语言程序设计-第三章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计-第三章.ppt(23页珍藏版)》请在人人文库网上搜索。
1、第三章,数据类型、运算符、表达式,3.1数据类型,3.2 常量与变量,常量其值不能被改变的量。如2,1.3,A等 符号常量:将程序中的常量定义为一个标识符 一般使用大写英文字母表示 使用前必须先定义, 定义的形式是: #define 符号常量名 常量 例如: #define PI 3.1415926,#define PRICE 30 #include void main() int num,total; num=10; total=num*PRICE; printf(“total=%dn,total); ,变量其值可以被改变的量。每个变量有一个名字。 变量名命名原则: 1) 只能由字母、数字、。
2、下划线组成,且第一个字符必须为字母或下划线。 2) 前八个字符。 3) 区分大小写,经常用小写字母。 4) 用实际意义的单词或汉语拼音表示 要求: 1) 对所有变量必须先定义后使用 2) 凡未被事先定义的,不作为变量名 每个变量被指定为一个确定的类型,3.3整型数据,3.3.1整型常量 三种数制的表示 1) 十进制:123,0,-12345 2) 八进制:以0开头的数,如012,-0123,-019(错) 3) 十六进制:以0X开头的数,如0X12,0X1AB 3.3.2整型变量 一、整型变量的分类,整型变量的定义及使用,#include main() int a,b,c,d; unsigne。
3、d u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(a+u=%d,b+u=%dn,c,d); 输出结果a+u=22,b+u=-14,整型数据的溢出 main() int a,b; a=32767; b=a+1; printf(%d,%dn,a,b); -32768032767,注意,1) 一个常量的后面加上U(u)为无符号常量,如-12345U对应于53191(65536-12345=53191) 2)一个常量的后面加上L(l)为长整型。加上H(h)为短整型。,3.4实型数据,3.4.1实型常量的表示 1) 小数形式:123.56,-785.65 2) 指数形式。
4、:1.23E3。要求E(e)的前后必须有数字,且E(e)的后面只能是整数。 3.4.2实型变量 一、分类,二、舍入误差,例3.4 main() float a,b; a=123456.789e5; b=a+20; printf(a=%f,b=%fn,a,b); ,理论上b=12345678920,但是实际上a=b=12345678848.000000。原因是一个单精度实型只能保证7位有效数字。因此要避免一个很大的数和一个很小的数直接加减。如果把类型改为double,输出格式用lf则,结果正确。,三、实型常量的类型,C编译系统将实型常量当作双精度数处理。,3.5字符型数据,3.5.1字符型常量 。
5、字符型常量一对单引号括起来的一个字符。如a,1 字符串常量一对双引号括起来的多个字符。如”abc”,”a” 常用转义字符及含义,字符变量,用来存放字符,只能存放一个字符 字符变量的定义形式如下: char c1, c2; 它表示c1和c2为字符变量,各放一个字符。因此可以用下面语句对c1、c2赋值: c1 = a;c2 = b;,#include void main() char c1,c2; c1=97;c2=98; printf(%d%d,c1,c2); printf(%c%c,c1,c2); 因为 a和b的ASCII码为97和98。第4行将输出两个字符。%c是输出字符的格式。程序输出: 。
6、RUN 97 98 ab,main() char c1,c2; c1=a;c2=b; c1 = c1 - 32;c2 =c2 - 32; printf(%c %c,c1,c2); 运行结果为 A B,3.6变量赋初值,在定义变量的同时赋予初值。如 int a=3; float b=3.56; char c=a; int a,b,c=5; 给部分变量赋予初值。 int a=3,b=3,c=3;不能写成int a=b=c=3; int a; a=3;,3.7数据混合运算,小类型转换为大类型,结果为所涉及类型中的最大类型 char(short)intunsignedlong(float) doubl。
7、elong double,3.8算术运算符和算术表达式,3.8.1算术运算符 1、基本运算 + 加法运算、正值运算 - 减法运算、负值运算 * 乘法运算 / 除法运算(注意,如果除号左右两边都是整数,则为整除) % 求余运算(必须是整数) 如:3/2=1,3%2=1,-3/2=-1,-3%2=-1,3/-2=-1,3%-2=1,-3/-2=1,-3%-2=-1,强制类型转换,例3.8.1 main() float x; int i; x=3.6; i=(int)x; printf(x=%f,i=%dn,x,i); ,强制类型的一般格式:(类型名)(表达式) 注意,上例中X的值没有变化,也就是强。
8、制类型转换不改变本身表达式的值,只是产生一个中间结果而已。,自增、自减运算,y=+k k=k+1; y=k; y=k+ y=k; k=k+1; 前缀+,先加,后缀+,后加 前缀-,先减,后缀-,后减,#include void main() int i,j,m,n; i=8;j=10; m=+i;n=j+; printf(%d,%d,%d,%dn,i,j,m,n); ,9,11,9,10,赋值运算和赋值表达式,1、类型转换 1) 实型赋给整型,舍弃小数部分 2) 整型赋给实型,值不变,后面加0 3) 双精度赋给单精度,截取前7位有效数字,但应该注意数值范围,不要溢出。如: float f; d。
9、ouble d=123.456789e100;f=d;错误 float f; double d=123.456789e20;f=d;则f=123.457e20 4) 字符型和整型在ASCII码内可以直接赋值 2、赋值表达式 扩展的赋值表达式:,#include main() int a, b, c, x, y, z; a=1; b=2; c=3; x=a; y=b; z=c; printf(x=%d, y=%d, z=%dn, x,y,z); x=y=z=c; z+=3; printf(x=%d, y=%d, z=%dn, x,y,z); ,x=1,y=2,z=3 x=3,y=3,z=6,逗号运算,逗号表达式的求解:从左到右依次运算,结果为最后一个表达式n的值。 表达式1,表达式2,表达式n a=3*5,a*4。