C语言程序设计-2--曾剑平.ppt_第1页
C语言程序设计-2--曾剑平.ppt_第2页
C语言程序设计-2--曾剑平.ppt_第3页
C语言程序设计-2--曾剑平.ppt_第4页
C语言程序设计-2--曾剑平.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计(2) -基本数据类型、输入输出,曾剑平 博士 /zengjp 2012年03月,提 纲,VC上机中的问题 基本数据类型 输入和输出基础 上机练习,运行时不是我希望,如果已经存在工程及C文件(c1),又另外建了一个C(c2),但运行时希望执行c2中的main函数。解决: 1) 关闭worksapce,在提示中选择N 2) 这时只保留c2,再进行compile,运行。,VC在Linking时停止了,解决: C程序编辑完成后,不要马上执行(execute program). 正确: 先compile, 确保没有error和warning,如果有先修改代码。然后再执行。,Workspace, project, C,一次只能打开一个workspace 一个Workspace可以包含多个project,但只能有一个处于active状态 一个project可以包含多个C文件 处于active状态的project中的C文件中只能有一个main函数,提 纲,VC上机中的问题 基本数据类型 输入和输出基础 上机练习,整型数据,int a1; short int a2; long int a3; 按照数值范围大小: 基本型:int 短整型:short int (简:short) 长整型:long int (简:long) 取值范围: a1: -231 231-1 (-2147483648 2147483647) a2: -215 215-1 (-3276832767) a3: -231 231-1 (-2147483648 2147483647),取值范围的解释,int 4个字节(byte), 4*8=32位(bit) short 2个字节, 2*8=16 位 long 4个字节, 4*8=32位 这三种类型变量的二进制位表示中,最高位表示符号位:0正,1负 因此,能用于表示数值的位要减1。 如:short 在计算机中的表示: 00000000 00000001 表示 1 20 00000000 00000011 表示 3 22-1 01111111 11111111 表示 32767 215-1,假如为4bit,则表示范围 (015) : 0000, 0001, 0010, 0011,1111 24-1=15 为什么short16bit表示最大是: 215-1? 为什么long/int32bit表示最大是: 231-1?,数值位数 int 4*8=32位(bit) 31 short 2*8=16 位 15 long 4*8=32位 31 但是在不同的C编译平台上,int, short, long的字节数不一定是 4, 2, 4. 只要: long的字节数 = int的字节数 short的字节数= int的字节数,超范围的变量赋值,int a1; short int a2; a1 = 2147483646 a1 = 2147483647 a1 = 2147483648 a2 = 32767; a2 = 32768; a2 = 32769;,warning C4305: = : truncation from const int to short,VC不会warning, 但 不能正确赋值!,负数,1) 负整数在计算机中的表示: -1, -10? 2)最高位为1的二进制数对应的负整数是多少? 10000000 00000001 表示 ? 10000000 00000011 表示 ? 11111111 11111111 表示 ?,补码,反码,负整数在计算机中用补码表示。 short a2=-1; 1) 对应的正整数的二进制数 00000000 00000001 2) 求反码: 11111111 11111110 3) +1: 11111111 11111111 short a2=-10; 1) 对应的正整数的二进制数 00000000 00001010 2) 求反码: 11111111 11110101 3) +1: 11111111 11110110,11111111 11111111 表示 ?,1) -1 11111111 11111110 2) 求反码 00000000 00000001 3) 求得对应的整数:1 11111111 11111111 表示 -1,10000000 00000001 表示 ?,1) -1 10000000 00000000 2) 求反码 01111111 11111111 3) 求得对应的整数:32767 10000000 00000001 表示 -32767,利用VC的debug观察,16进制格式,对应的二进制数: 11111111 11110110,如果不需要符号位,如年龄变量,非负。可定义为: unsigned int age; 称为:无符号基本型变量 unsigned short无符号短整型 unsigned long无符号长整型 表示范围: age: 0232-1,其他进制的整数表示,八进制: 整数开头加一个数字符0;如 0123 十六进制:整数开头加0x (0X). 由09, a,b,c,d,e,f 或对应的大写字母构成十六进制数。 0x123, 0x1abc 0x 123 (0x后面不能有空格),整数常量,直接在数字后加类型符号: 长整型,加L(或 l): 123L 无符号整型,加U(或u) : 1u, 122u 无符号长整型,同时加U L (u, l), 22ul 基本型、短整型:没有对应的符号。 思考: 1u 1L 的区别,整数型变量定义,int a1; short a2; / 同:short int a2; long a3; / 同:long int a3; unsigned int a4; unsigned short a5; /同unsigned short int a5; unsigned long a6; /同unsigned long int a6; a4=-10; a5=-100; a2=32769;,不正确赋值,浮点型数据,带小数点或指数符号的数值数据。按数值范围和精度分: 单精度:float 双精度:double 长双精度:long double (double不能省略),表示范围,float 占4字节, 7位有效数字,范围: -3.410-38 3.41038 double占8字节, 15位有效数字,范围: -1.710-308 1.710308 long double占16字节, 18位有效数字范围: -1.210-4932 1.2104932,书写要求,格式:正负号 整数部分.小数部分 指数部分 要求: 整数、小数部分不可同时没有; 小数点、指数部分不可同时没有; 指数部分为 e(或E)开始加一个整数。 合法:.7 .457 9. 1.5e-6 2e3 2.e3 .2e3 不合法:e4 .e5 5.0E 7 是整型; 7. 是浮点型.,类型符号,1.5f 1.5F (float) 1.5L 1.5l (long double) 1.5 (double) 下面语句有问题吗? float x=1.23456789; double y=1.234f;,数字后面没有类型符 ,默认为 double型 warning C4305: initializing : truncation from const double to float,误差问题,float x=1.23456789f; 实际赋值可能不正确,超过有效数字位数 判断两个浮点数x, y是否相等: fabs(x- y) 1e-6 fabs(x-y)fabs(x*1e-6),字符型数据,char c1, c2; c1=A; c2=a; /只能使用单引号 表示1个字符,占1个字节。 错误: c1=“A” 双引号 c1=; 没有值 c1=; c1=; 特殊符号 正确的是: c1=; /使用转义, 实际为1字符,c1被设为 ,转义字符常量,a b n r t v f ” 0 : 字符串结束标志 ddd d八进制数字 () xhh h 十六进制数字 (0255) 转义符是字符型,只能表示1个字符,占1个字节。因此,dddd, xhhh是不正确的。使用时将得不到正确结果,如printf(“d%”,1000); 并不输出512. 并且使用时必须用单引号或作为字符串的一部分。如,printf(“%c”, x5a); printf(“Im a student.”);,字符串常量,简称:字符串 由普通字符和转义字符两种字符组成。 在内存中的字符串,最末尾是0标志字符串的结束。 char s5=“1234”; /定义的长度多1 区别: a 1字节 char s=a; “a” 2字节 char s2=“a”;,字符型数据的运算,char c1, c2; c1=97; c2=c1+1; c1=a; c2=c1+1; 后面两个语句达到相同的目的: c1=a c2=b 字符型和整型可以通用,混合运算。,与整型通用带来的符号问题,char c=376; printf(“%d”,c); 输出: 254, -2 取决于编译系统对二进制最高位的处理。 unsigned char c=376; printf(“%d”,c); 输出 254,提 纲,VC上机中的问题 基本数据类型 输入和输出基础 上机练习,单字符输出/输入函数,输出一个字符:putchar(int ch); ch字符型、整型 从键盘得到一个字符: char ch; ch=getchar(); /等待用户输入,并按回车,如果输入多个字符,只取第一个字符。,关于getchar(),从键盘获得三个输入值。stdin 是输入设备标识符 #include void main() char c1, c2, c3; c2=getchar(); fflush(stdin); /清除键盘缓冲,否则不一定正确获得输入值 c1=getchar(); fflush(stdin); c3=getchar(); return; ,格式输出函数,printf(输出格式控制字符串s,输出列表); s中三类字符的处理: 普通字符:原样输出 转义字符:按转义符的作用输出 输出格式转换说明:由若干个输出格式组成。 一个输出格式:%+修饰符+格式符,输出列表:由若干输出项组成,用逗号隔开。 每个输出项可以是常量、变量、表达式。 每个输出项与输出格式一一对应。,printf的要点,1) 小数位长度小时,会进行四舍五入再输出 printf(“%6.2f”, 123.4567); 指定的数据的输出宽度:正负号不计算在内。宽度大,不影响显示;但宽度不足,会自动补空格(这时小数点占一个宽度)。 单个% printf(“%”, 65); 无显示 4) 掌握常用的:%c, %s, %d, %f, %x, %o, %7.2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论