1、数据,新C 语言程序设计,2.1 基本数据类型,程序与数据 区别不同数据 2.1.1整型数据 有符号数和无符号数 signed(可省略)、unsigned 字符型 char 短整型 short int 或 short 标准整型 int 长整型 long int 或 long,2.1 基本数据类型,溢出问题 【例2.1】500按字符类型的数据保存,值会变成多少? 实验1:unsigned char k=500;printf(“%dn“,k);,输出244,2.1 基本数据类型,溢出问题 【例2.1】500按字符类型的数据保存,值会变成多少? 实验2:signed char k=500;print
2、f(“%dn“,k);,输出-12,2.1 基本数据类型,2.1 基本数据类型,unsigned char 类型数据范围:,= 0,= 1,= 255,2.1 基本数据类型,signed char 类型数据(补码表示)范围:,= -128,= -127,= -2,= -1,= 0,= 1,= 127,2.1 基本数据类型,(50)10 =(110010)2unsigned char k=50;signed char k=50;signed char k=-50;,符号位,符号位,2.1 基本数据类型,2.1.2 浮点型数据 浮点数在内存中 unsigned类型:指数符号、指数、尾数 signe
3、d类型:符号、指数符号、指数、尾数 单精度浮点型、双精度浮点型、高精度型 float、double、long double,2.1 基本数据类型,2.1.3 指针型数据 内存地址与门牌号码 计算机的内存就像一条长街上的一排房子 内存地址与指针 C语言中定义了一个数据类型用来保存内存地址 内存地址与整数 指针类型存储的实际上是无符号的整数数据 指针型数据和无符号整型数据的处理方式有很大差别 指针也有类型 每个地址不一定只对应一个字节的内存,2.1 基本数据类型,有趣的实验: int a,b,c,d; printf(“%dn%dn%dn%dn“,屏幕输出: 1245052 1245048 1245
4、044 1245040,2.2常量,2.2.1 字面常量 整型常量 十进制整数,如:35 八进制整数,前面加零,如:035 十六进制整数,前面加0x或0X,如: 0xab 0xab 0Xab 0XAB 这四种形式等价 无符号整数:50U或50u 长整数:50L或50l 无符号长整数:50UL 或 50LU,2.2常量,2.2.1 字面常量 实型常量 十进制形式:整数部分+小数点+小数部分 合法:12.0 12. 1.2 0.12 .12 指数形式 :尾数+字母e或E+指数 合法:1e3 1E3 1.2E3 注意:尾数不能省略,如:1e 1E e3 E3均不是实型常量。,2.2常量,字符常量 普
5、通字符常量:用单引号括起来的单个字符 转义字符常量,2.2常量,2.2常量,putchar函数调用格式: putchar(字符的ASCII码值) 或 putchar(字符) 【例2.6】#include main() putchar(x); 输出:xputchar(t); 输出:制表符putchar(); 输出:putchar(x); 输出:xputchar(n); 输出:换行符putchar(); 输出:putchar(n); 输出:换行符 ,2.2常量,写出下列程序的运行结果#include main() putchar(a); putchar(101);putchar(x41);putc
6、har(65); putchar(A); putchar(n); ,2.2常量,字符串常量 定义:由双引号括起来的0个或多个字符 举例: “china“ “a23“ “658“ “R“ “ “ 【例2.7】请写出下列程序运行结果: #include void main(void) printf(“xtxnn“); ,2.2常量,字符串的存储 字符 A 和字符串“A“在计算机内存储有何不同?,65,字符 A的存储:,字符串 “A“的存储:,字符串的值 字符 串的值是字符串存放在内存中的首地址。,2.2常量,2.2.2 符号常量 符号常量定义的一般格式 #define 符号常量名 常量 【例2.8
7、】请写出下列程序的运行结果: #include #define A A #define LN n #define STRING “ABCDn“ void main(void) putchar(A);putchar(LN);printf(STRING); ,2.2常量,【例2.9】 #include #define X 100 void main(void) printf(“输出整型常量的值:%dn”,50);printf(“输出整型字面常量X的值:%dn”,X); ,2.2常量,【例2.10】 #include #define PI 3.14 void main(void) printf(“输
8、出浮点型常量的值:%fn”,10.29);printf(“输出浮点型常量PI的值: =%fn”,PI); ,2.2常量,使用符号常量的好处 增强程序的可读性 增强程序的可维护性,2.3 变量,变量与变量名 2.3.1 标识符 合法标识符的命名规则 标识符分类 关键字 预定义标识符 用户标识符,2.3 变量,2.3.2 变量的定义 定义变量的形式 类型名 变量名; 类型名 变量名1, 变量名2, 变量名3;,2.3 变量,2.3.2 变量的定义 #include void main() int a,b; char ch1,ch2; float averge; double sum; int *p
9、,*q; float *m,*n; float *r; void *t; ,2.3 变量,2.3.2 变量的初始化 在系统为改变量分配内存的同时对其赋值 #include void main(void) int a=12,b=5; float x=3.14,y,z; char ch=R; char *p=0; 未赋初值的变量,2.3 变量,2.3.2 变量的引用 访问变量的值 访问变量的地址 【例2.12】输出变量的值 #include main() int a=5;printf(“a=%dn“,a);printf(“ ,2.3 变量,【例2.13】修改变量的值。,2.4 输出与输入,标准输入
10、、输出库函数 2.4.1 基本输出 输出单个字符函数:putchar 【例2.14】 #include “stdio.h“ void main() char ch1,ch2,ch3;ch1=65;ch2=b;ch3=#;putchar(A); putchar(ch1); putchar(ch2); putchar(ch3); ,2.4 输出与输入,格式化输出函数:printf 格式:printf (格式控制,输出表列) 格式控制是用双引号括起来的字符串,也称“转换控制字符串”,包含三种内容: 普通字符:要求按原样输出的字符。 转义字符:要求按转义字符的意义输出。 格式说明:格式说明由“%”和格
11、式字符组成 输出表列是由若干个逗号分隔的输出项组成。每个输出项可以是一个常量、变量、表达式等 举例:printf(“a=%d b=%d”,a,b);,2.4 输出与输入,常用的格式字符,2.4 输出与输入,附加的格式字符,2.4 输出与输入,【例2.15】写出下列程序的运行结果。 #include main() char ch = h; int count = -9234;double fp = 251.7366;printf(“n%d,%6d,%un“, count, count, count); printf(“%d,%X,%x,%on“, count, count, count, cou
12、nt ); printf( “%i,%i,%in“,0x10, 010, 10 );printf(“%cn“, ch);printf( “%f, %.2f, %e,%En“, fp, fp, fp, fp ); ,2.4 输出与输入,2.4.2 基本输入 输入单个字符函数:getchar 【例2.15】 #include “stdio.h“ void main() char c;c = getchar(); putchar(c); ,2.4输出与输入,格式化输入函数:scanf 格式:scanf (格式控制,地址表列) 格式控制的含义与printf函数类似。 “地址列表”是由若干个地址组成的表列,可以是变量的地址 或直接使用指针类型变量。,2.4输出与输入,scanf格式符,2.4输出与输入,scanf附加格式符,2.4输出与输入,scanf 函数使用举例: #include “stdio.h“ void main() int x,y,z;scanf(“%d,%d,%d”, ,