资源描述
1,第三章 数据类型、运算符与表达式,2,程序设计 = 数据结构 + 算法 C 语言的数据结构是以数据类型形式出现的,3,常 量(在程序运行过程中,其值不能改变的量。 分为字面常量和符号常量) 字面常量或直接常量: 整常量:十进制 +3 123 -12 0 12L 12l (3.0不是) 八进制 以0开头 0123(十进制83)、-011(-9) 十六进制 以0 x开头 0 x123(291),-0 x12(-18) 实常量:十进制小数点形式(必须有小数点) 0.2、.2、+2.0、-2.、0.0(2不是) e指数形式 1e2、1E2 (代表1102=100) 15e2、1.5E3、5e-2,-.5e1,1E0, e前后必须有数,e后必为整数 3e、e3、E、2.1e3.5 错! 123.456,12.3456e1,1.23456e2,0.123456e3 均等价 规范化形式 (小数点左边有且只有一位非零数字),4,字符常量: a、 A (两者不同)、5 转义字符:以反斜杠字符“”开头的字符序列。 意思是将“”后面的字符转换成另外意思。 n(换行,将当前位置移到下一行开头) r(回车,将当前位置移到本行开头) t(水平制表,跳到下一个Tab位置) b(退格,将当前位置移到前一列) ddd (1到3位八进制数所代表的字符) 101代表ASCII码(八进制)为101, 即ASCII码(十进制)为65的字符A xhh(1到2位十六进制数所代表的字符) x41代表ASCII码(十六进制)为41, 即ASCII码(十进制)为65的字符A 0代表ASCII码为0的控制字符,即“空操作”字符。,5,字符串常量:一对双引号括起来的字符序列 如:”How do you do.” , ”CHINA” , ”a” printf(”This is a program.” ); 在内存中 长度为6字符 注意: a 与 ”a” 不同 内存中 a a 0 char c=”a” ; 是错的 没有字符串变量,字符串需用字符数组存放。,0是字符串结束标志,即ASCII码为0的空操作字符,以判断字符串是否结束。在写字符串时不必加0,系统自动加。,6,符号常量: 例3.1 #define PRICE 30 #define PI 3.1416 main() main() int num,t; float r,s; num=10; scanf(“%f”, 输出:t=300 输入:1 输出s= 6.283184,7,变 量: 定义:类型、名字、初始化 int i=1,j,k; short m,n; long c,d; unsigned u,v; float a=3.6,b=7.1; double x,y; char w1,w2=A; 变量名:由字母、数字和下划线组成 第一字符必为字母或下划线 sum, X2, x2, student_name, _file 正确 M.D, $123, #abc, xy, 3t, 不正确 注意,大小写字母认为是两个不同的字符 对变量“先定义,后使用”,告诉系统分配 内存空间,8,6种整型变量: 有符号基本整型signed int 无符号基本整型unsigned int 有符号短整型signed short int 无符号短整型unsigned short int 有符号长整型signed long int 无符号短整型unsigned long int 其中,无符号整型变量中可以存放的正数的范围比一般整 型变量中正数范围扩大一倍。 例如:int a;(-3276832767) unsigned int b;(065535) C语言没具体规定以上各类数据所占内存的字节数,只要求 long型数据长度不短于int型,short型不长于int型。,9,浮点型变量: 单精度(float) 双精度(double) 长双精度(long double),10,字符型变量: 将一个字符常量放到一个字符变量中,实际上并不是把该 字符本身放到内存中去,而是将该字符的相应ASCII代码放 到存储单元中。 这样使字符型数据和整型数据之间可以通用。 例一: char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); a b printf(“%d %dn”,c1,c2); 97 98 例二:int i; char c; i=a; c=97;,11,Turbo C,12,13,14,优先级 运算符 结合方向 1 ( ) -(指针结构成员运算符) . (结构成员运算符) 从左到右 2 一元运算 ! + - + - * printf(”%dn”,i+); 输出结果3 i=4 i=3; printf(”%dn”,+i); 输出结果4 i=4 i=3; printf(”%dn”,-i+); 输出结果-3 i=4 +与-的结合方向是自右至左 -i+ 等价于 -(i+),不是 (-i)+ 注意:+与-的左右必须是变量,而不能是常量和表达式 5+,(a+b)+,(-k)+,-(a+4) 都是错的 例: 对于i=3 k=i+; 执行后k值为3,i为4 k=+i; 执行后k值为4,i为4,18,19,376 以整数形式输出为-2,i的值也是-2。,20,21,22,23,24,25,/* p66,ex0309:求算术表达式的值 */ (1)设 x=2.5, a=7, y=4.7 x+a%3*(int)(x+y)%2/4 2.5+7%3*(int)(2.5+4.7)%2/4 2.5+ 1 * 7 % 2 / 4 2.5+ 1/4 2.5 (2)设a=2, b=3, x=3.5, y=2.5 (float)(a+b)/2+(int)x%(int)y (float)(2+3)/2+(int)3.5%(int)2.5 5.0 / 2 + 3 % 2 25 + 1 3.5,26,/* p66,ex0310: 写出程序运行结果 */ main( ) int i=8,j=10,m,n; m=+i; n=j+; printf(%d,%d,%d,%dnn,i,j,m,n); 输出结果: 9,11,9,10,i=9, m=9,n=10,j=11,27,28,/* 补充题:求算术表达式的值 */ 1. 7*2%3+5/2*4 14%3 + 2*4 2+8 10 2. 3/5+1.3 0 + 1.3 1.3 3. 13%5+d 3 + 100 103 或 g 4. (b=5,b+,b-3,b*2) b=5,b=6,3,12 12,29,
展开阅读全文