阅读|史蒂芬·普拉达《C Primer Plus(第6版)》:数据和C

发布于:2025-09-11 ⋅ 阅读:(17) ⋅ 点赞:(0)

数据:数据类型关键字

  • 对我们而言,整数和浮点数的区别是它们的书写方式不同。对计算机而言,它们的区别是存储方式不同。
  • 在一个值后面加上一个小数点,该值就成为一个浮点值。
  • 7是整数,7.00是浮点数。
  • 这里关键要理解浮点数和整数的存储方案不同。计算机把浮点数分成小数部分和指数部分来表示,而且分开存储这两部分。因此,虽然7.00和7在数值上相同,但是它们的存储方式不同。在十进制下,可以把7.0写成0.7E1。这里,0.7是小数部分,1是指数部分。图3.3演示了一个存储浮点数的例子。当然,计算机在内部使用二进制和2的幂进行存储,而不是10的幂。

 C语言基本数据类型

  • int类型是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。
  • 目前的个人计算机一般是32位,因此用32位存储一个int值。现在,个人计算机产业正逐步向着64位处理器发展,自然能存储更大的整数。
  • C语言把不含小数点和指数的数作为整数。因此,22和-44都是整型常量,但是22.0和2.2E1则不是。
  • 要确保转换说明的数量与待打印值的数量相同,编译器不会捕获这类型的错误
  • 在第一行输出中,第1个%d对应int类型变量ten;第2个%d对应int类型常量2;第3个%d对应int类型表达式ten - two的值。在第二行输出中,第1个%d对应ten的值,但是由于没有给后两个%d提供任何值,所以打印出的值是内存中的任意值
  • 0x或0X前缀表示十六进制值,所以十进制数16表示成十六进制是0x10或0X10。与此类似,0前缀表示八进制。例如,十进制数16表示成八进制是020。
  • 使用不同的进制数是为了方便,不会影响数被存储的方式。也就是说,无论把数字写成16、020或0x10,存储该数的方式都相同,因为计算机内部都以二进制进行编码。
  • 以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x。另外,要显示各进制数的前缀0、0x和0X,必须分别使用%#o、%#x、%#X。
  • short int类型(或者简写为short)占用的存储空间可能比int类型少,常用于较小数值的场合以节省空间。与int类似,short是有符号类型。
  • long int或long占用的存储空间可能比int多,适用于较大数值的场合。与int类似,long是有符号类型。
  • long long int或long long(C99标准加入)占用的存储空间可能比long多,适用于更大数值的场合。该类型至少占64位。与int类似,long long是有符号类型。
  • unsigned int或unsigned只用于非负值的场合。这种类型与有符号类型表示的范围不同。例如,16位unsigned int允许的取值范围是0~65535,而不是-32768~32767。用于表示正负号的位现在用于表示另一个二进制位,所以无符号整型可以表示更大的数。
  • int类型那么多,应该如何选择?首先,考虑unsigned类型。这种类型的数常用于计数,因为计数不用负数。而且,unsigned类型可以表示更大的正数。
  • 当确实需要32位的整数时,应使用long类型而不是int类型,以便把程序移植到16位机后仍然可以正常工作。类似地,如果确实需要64位的整数,应使用long long类型。
  • 在int为16位、long为32位的系统中,会把7作为16位存储,把7L作为32位存储。
  • 标准ASCII码的范围是0~127,只需7位二进制数即可表示。通常,char类型被定义为8位的存储单元,因此容纳标准ASCII码绰绰有余。
  • 在C语言中,用单引号括起来的单个字符被称为字符常量(character constant)。编译器一发现'A',就会将其转换成相应的代码值。
  • 如果省略单引号,编译器认为T是一个变量名;如果把T用双引号括起来,编译器则认为"T"是一个字符串。
  • 使用特殊的符号序列表示一些特殊的字符。这些符号序列叫作转义序列
  • 换页符(\f)把活跃位置移至下一页的开始处;换行符(\n)把活跃位置移至下一行的开始处;回车符(\r)把活跃位置移动到当前行的开始处;水平制表符(\t)将活跃位置移至下一个水平制表点(通常是第1个、第9个、第17个、第25个等字符位置);垂直制表符(\v)把活跃位置移至下一个垂直制表点。
  • 换页符和垂直制表符在PC屏幕上会生成奇怪的符号,光标并不会移动。只有将其输出到打印机上时才会产生前面描述的效果。
  • 把最小的正浮点数除以2将得到一个低于正常的值。如果除以一个非常大的值,会导致所有的位都为0。

 


网站公告

今日签到

点亮在社区的每一天
去签到