C语言N02 C语言基本数据类型 2学时+2学时

更新时间:2023-07-27 23:10:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二章 基本数据类型

本章课程共2学时 其中:授课2学时,上机2学时

2.1 基本数据类型类型 符号 关键字 (signed) int (signed) short (signed) long 所占位数 16 16 32 数的范围

P45-32768(-215)~32767(215-1) -32768(-215)~32767(215-1) -2147483648(-231) ~2147483647(231-1)

有 整型无

unsigned intunsigned short unsigned long

1616 32

0~65535(216-1)0~65535(216-1) 0~4294967295(232-1)

有实型 有 有 无

floatdouble char unsigned char

3264 8 8

3.4e-38~3.4e381.7e-308 ~1.7e308 -128(-27)~127(27-1) 0~255(28-1)2

字符型2014-6-27

2.2 常量:程序运行时值不能改变的量 P39符号常量:用标识符代表的常量/*符号常量举例Ex02_01.c*/ #define PRICE 30 main( ) { int num, total; num=10; total=num*PRICE; printf("total=%d",total); } 宏定义预处理命令,不是C语句

整型常量12,-22435,0313,0x121

实型常量3.14,1.2e-8,3.6E+9

字符常量 A , ‘E , ‘+ , ‘\101 , ‘\xEF , ‘\n

直接常量:直接用数值表示的常量2014-6-27

字符串常量“China”, “Hellow”, 3 “”

三种整型直接常量的表示方式十进制 符号:0~9,+,123,- 456

八进制十六进制

以0开头,后面跟符号:0~7,以0x开头,后面跟符号: 0~9,a~f,A~F

0123,0110x123,0xff

整型直接常量的类型的确定原则:(1) 根据其值所在范围确定其数据类型 (2) 在整常量后加字母l或L,认为它是long int 型常量 (2) 在整常量后加字母u或U,认为它是unsigned int 型常量 例:判定下列三个整型直接常量的存储方式和类型 (1) 12315 (2) 123L (3) -12345u2014-6-27 4

实型直接常量的表示形式 小数形式 指数形式 0.12,.34,-.56,123. 12.3e3 ,123E2, 1.23e4 必须要有小数点 E或e前必须有数字 E或e后必须为整数

实型直接常量的类型的确定原则:(1) 默认为双精度double型 (2) 在实型常量后加字母f或F,认为它是浮点型(float)常量

2014-6-27

字符常量:用单引号括起来的单个普通字符或转义字符

如: ‘a A ? \n \101 字符常量的值:该字符的ASCII码值 如: ‘A —65, ‘a —97,‘0 —48 , \n —10 转义字符:反斜线后面跟一个字符或一个代码值表示转义 字符\n

含义换行

转义 字符\t

含义制表符

例 转义字符举例main() { printf("\101 \x42 C\n"); printf("I say:\"How are you?\"\n"); printf("\\C Program\\\n"); printf("Turbo \'C\'"); }

\v\r \a

垂直制表符回车 响铃

\b\f \\

退格换页 反斜线

\ \ddd

单引号3位8进制数

\”\xhh

双引号2位16进制数

2014-6-27

运行结果:(屏幕显示) ABC I say:”How are you?” \C Program\ Turbo C

字符串常量:用双引号(“”)括起来的字符序列 每个字符串尾自动加一个 ‘\0’ 作为字符串结束标志h e l l o w \0 \0

字符常量与字符串常

量不同

a

a

“a”

a

\0

例:判断下列常量所占内存空间大小 (1) 'a' (2) "China"

答: (1) 'a'为字符常量,所占空间为1字节 (2) "China"为字符串常量,所占空间为字符数5+1=6字节2014-6-27 7

2.3 变量:内存中具有特定属性的单元 P41 变量的理解a EFh 23

– 变量代表一个存储单元 – 变量具有一定的数据类型 – 变量有一个可以标识的名字用于分配内存

合法标识符作为变量名称

数据类型 变量1[,变量2,…,变量n];

例:右侧程序中有哪些错误? main()

{ int a, b=2; c=2.3; 变量data应在开始处定义 float data; a=1; 可以在定义的时候赋初值 data=(a+b)*1.2; printf(“data=%f\n”,data); 2014-6-27 } 变量c未定义

基本数据类型变量整型变量 一般占2字节 short≤int≤long 用sizeof(类型标识符) 测量

实型变量

字符型变量

float:占4字节,提供7 字符变量存放字符 位有效数字 ASCII码 double:占8字节, char与int数据间可进 15~16位有效数字 行算术运算

例:a= D ; /* a=68; */ x= A +5; /* x=65+5; */ s= ! + G /* s=33+71; */

没有字符串变量,用字符数组存放2014-6-27 9

变量和常量定义的一个例子

例 /*Ex02_04.c*/ #define PRICE 12.5 main() { int num=3; float total; char ch1, ch2= D ;

宏定义 变量定义

total=num*PRICE; 输出结果 ch1=ch2- A + a ; printf(“total=%f,ch1=%c\n”,total,ch1); }2014-6-27

运行结果: total=37.500000, ch1=d

2.4 基本数据类型的数据的输入输出 P65 注意:– C程序中没有输入输出命令 – C程序中的输入输出由特定的函数来实现字符输出:putchar()

如何掌握这四个函数? (1) 了解功能

数据输出格式输出:printf() 字符输入:getchar() 格式输入:scanf()

(2) 了解应用格式(3) 了解输入参数 (4) 知道返回值11

数据输入

2014-6-27

例 m.n 例 int a=1234; float f=123.456; char ch= a ; printf(“%8d,%2d\n”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch); 运行 1234,1234 结果: 123.456001,123.456001, 123.5,123.46,1.2e+02 a 例 static char a[]=“Hello,world!”; printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a); 运行结果:Hello,world! Hello,world! Hello Hello Hel

2014-6-27

例 -

例 int a=1234; float f=123.456; static char c[ ]=“Hello,world!”; printf(“%8d\n%-8d\n”,a,a); printf(“%10.2f\n%-10.1f\n”,f,f); printf(“%10.5s\n%-10.3s\n”,c,c); 运行结果: 1234 1234 123.46 123.5 Hello Hel

2014-6-27

例 0 、+ 例 int a=1234; float f=123.456; printf(“%08d\n”,a); printf(“%010.2f\n”,f); printf(“%+08d\ 0+8d\n”,a); printf(“%+010.2f\ 0+10.2f\n”,f);

//00001234 //0000123.46 //000+1234 //+0001234 //000+123.56 //+000123.56

例 # 例 int a=123; printf(“%o,%#o,%

X,%#X\n”,a,a,a,a); //173,0173,7B,0X7B例 l 例 long a=65536; printf(“%d,%8ld\n”,a, a); //0, 6553600 00 00 00 00 00 00 01 00 00 00 00 00 00 00 0014 2014-6-27

格式化输入的要点例 字符串输入的截取 例 scanf(“%3c%2c”,&c1,&c2); 输入 abcde 则‘a c1, d c2 数字输入的截取 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 输入 19991015 则1999 yy, 10 mm, 15 dd 空格和回车作结束分隔 scanf(“%2d %*3d %2d”,&a,&b); 输入 12 345 67 则12 a, 67 b

例 屏蔽符*的应用 例 scanf(“%3d%*4d%f”,&k,&f); 输入 12345678765.43 则123 k, 8765.43 f 例 其它字符原样输入 scanf(“%d,%d”,&a,&b) 输入 3,4 则3 a, 4 b

例 其它字符原样输入 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 输入 a=12,b=24,c=36 则12 a, 24 b, 36 c 其中空格对应

2014-6-27

例 其它字符原样输入 scanf(“%d:%d:%d”,&h,&m,&s); 输入 12:30:45 则12 h, 30 m, 45 s

注意:此处&不可少!

2.5 不同类型间的数据转换隐式转换 转换场合 运算转换 赋值转换 输出转换 函数调用转换

P54

int max(int x, int y) int a; { float f=1.2; } i=(int)x; 例: char ch; int i; float f; double d; long l; a=f; int a=65; char ch='A'; float f=6.57; …… printf(“x=%f,i=%d”,x,i); a的值为 printf("a=%c,ch=%d,f=%d",a,ch,f); int a; ? } - (f+i) + 10+ a + i*f - d/l ch/I + f*d 1 输出结果: a=A,ch=65,f=6 a=max(3.14, 'A'); 结果:x=3.600000,i=32014-6-27

例 unsigned (int)(x+y) 例 main() { float x; (int)x+y (double)(3/2) int i; 低 int char,short (int)3.6 x=3.6;

高 double float 显式转换 (强制转换 ) 形式:( 类型名)(表达式) 得到所需类型的中间变量, long 原变量类型不变

2.6 算术运算符与算术表达式 包括符号– 基本算术运算符: + - * / % – 自增和自减运算符:++ -例 例 5/2 = 2 -5/2.0 = -2.5 例 5%2 -5%2 1%10 5%1 5.5%2 = 1 = -1 = 1 = 0 ( ) j=3; j=3; j=3; j=3; a=3; a=3;

P52

学习运算符时掌握什么?1. 目:运算对象的个数2. 功能 3. 优先级

4. 结合方向(难点)k=++j; k=j++; printf(“%d”,++j); printf(“%d”,j++); b=5;c=(++a)*b; b=5;c=(a++)*b; //j=4,k=4 //j=4,k=3 //4 //3 //a=4,c=20 //a=4,c=15

例 -i++ -(i++) i=3; printf(“%d”,-i++); //-32014-6-27

例 j+++k; (j++)+k;17

2.7 赋值运算符和赋值表达式 包括符号

P59

例 3=x-2*y; (×) a+b=3; (×)

– 基本运算符:= – 复合运算符:+= -= *= /= %= <<= >>= &= ^= |=例 a=3; d=func(); c=d+2; a+=3 a=a+3 x*=y+8 x=x*(y+8) x%=3 x=x%3 例则

float f; int i; i=10; f=i; f=10.0例 int i; i=2.56; //结果i=2;

例: a=12; a+=a-=a*a; //a=-264 等价于a=a+(a=a-(a*a))

例 int a=2; a%=4-1; a+=a*=a-=a*=3; //a=0 等价于a=a+(a=a*(a=a-(a=a*3))) 例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) //表达式值为5,

a,b,c值为5 //b=5,a=11 //表达式值为11,c=6,a=11 //表达式值10,a=10,b=4,c=6 //表达式值5,a=5,b=10,c=2

2014-6-27

2.8 逗号运算符和逗号表达式例 a=3*5,a*4 //a=15,表达式值60 a=3*5,a*4,a+5 //a=15,表达式值20 x=(a=3,6*3) //赋值表达式,表达式值18,x=18 x=a=3,6*a //逗号表达式,表达式值18,x=3 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); //1,2,3 printf(“%d,%d,%d”,(a,b,c),b,c); //3,2,3

例: /*Ex02_05.c*/ #include <stdio.h> main() { int x,y=7; float z=4; x=(y=y+6,y/z); printf("x=%d\n,y=%d",x,y); } 2014-6-27

运行结果:x=3,y=1319

本文来源:https://www.bwwdw.com/article/u3jm.html

Top