C Primer Plus学习笔记(三)

数据和C

关键字

最初K&R给出的关键字C90标准添加的关键字C99标准添加的关键字
intsigned_Bool
longvoid_Complex
short_Imaginary
unsigned
char
float
double

在C语言中,用int关键字来表示基本的整数类型。后3个关键字(long、short和unsigned)和C90新增的signed用于提供基本整数类型的变式,例如unsigned short int和long long int。char关键字用于指定字母和其他字符(如,#、$、%和*)。另外,char类型也可以表示较小的整数。float、double和long double表示带小数点的数。_Bool类型表示布尔值(true或false),_complex和_Imaginary分别表示复数和虚数。
计算机的存储方式可分为两大基本类型:整数类型和浮点数类型
位、字节和字是描述计算机数据单元或存储单元的术语。这里主要指存储单元。最小的存储单元是位(bit),可以储存0或1。虽然1位储存的信息有限,但是计算机中位的数量十分庞大。位是计算机内存的基本构建块。
字节(byte)是常用的计算机存储单位。对于几乎所有的机器,1字节均为8位。
字(word)是设计计算机时给定的自然存储单位。计算机的字长越大,其数据转移越快,允许的内存访问也更多。现在大多为64位。

整数和浮点数的区别

对我们而言,整数和浮点数的区别是它们的书写方式不同。对计算机而言,它们的区别是储存方式不同。
整数:和数学的概念一样,整数是没有小数部分的数,计算机以二进制数字储存。例如整数6以二进制写是110。
浮点数:浮点数与数学中实数的概念差不多。2.75、3.16E7、7.00 和 2e-8 都是浮点数。注意,在一个值后面加上一个小数点,该值就成为一个浮点值。所以,7是整数,7.00是浮点数。
区别: 1. 整数没有小数部分,浮点数有小数部分。
2. 浮点数可以表示的范围比整数大。

C语言基本数据类型

基本数据类型由11个关键字组成:int、long、short、unsigned、char、float、double、signed、_Bool、_Complex和_Imaginary。
有符号整型:int\short\long\long long
无符号整型:unsignedint、unsigned long、unsigned short
字符类型:char
布尔类型:_Bool
实浮点类型:float、double、long long

  • int类型:int类型是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。
  • short int类型(简写为short)占用的存储空间可能比int类型少,常用于较小数值的场合以节省空间。与int类似,short是有符号类型。
  • long int或long占用的存储空间可能比int多,适用于较大数值的场合。与int类似,long是有符号类型。
  • char类型:char类型用于储存字符(如,字母或标点符号),但是从技术层面看,char是整数类型。因为char类型实际上储存的是整数而不是字符。C语言把1字节定义为char类型占用的位(bit)数,因此无论是16位还是32位系统,都可以使用char类型。
  • _Bool类型:用于表示布尔值,即逻辑值true和false。因为C语言用值1表示true,值0表示false,所以_Bool类型实际上也是一种整数类型。但原则上它仅占用1位存储空间,只存储0或1。
  • 复数和虚数类型:C语言有3种复数类型:float_Complex、double_Complex和long double_Complex。
    整数溢出:可以把无符号整数j看作是表盘。当达到它能表示的最大值时,会重新从起始点开始。整数
    i 也是类似的情况。它们主要的区别是,在超过最大值时,unsigned int 类型的变量 j 从 0开始;而int
    类型的变量i则从−2147483648开始。注意,当i超出(溢出)其相应类型所能表示的最大值时,系统并
    不会通知用户。因此,在编程时必须自己注意这类问题。

小结

C 有多种的数据类型。基本数据类型分为两大类:整数类型和浮点数类型。通过为类型分配的储存量以及是有符号还是无符号,区分不同的整数类型。最小的整数类型是char,因实现不同,可以是有符号的char或无符号的char,即unsigned char或signed char。但是,通常用char类型表示小整数时才这样显示说明。其他整数类型有short、int、long和long long类型。C规定,后面的类型不能小于前面的类型。上述都是有符号类型,但也可以使用unsigned关键字创建相应的无符号类型:unsigned short、unsigned int、unsigned long和unsigned long long。或者,在类型名前加上signed修饰符显式表明该类型是有符号类型。最后,_Bool类型是一种无符号类型,可储存0或1,分别代表false和true。
浮点类型有3种:float、double和C90新增的long double。后面的类型应大于或等于前面的类型。有些实现可选择支持复数类型和虚数类型,通过关键字_Complex和_Imaginary与浮点类型的关键字组合(如,double _Complex类型和float _Imaginary类型)来表示这些类型。
整数可以表示为十进制、八进制或十六进制。0前缀表示八进制数,0x或0X前缀表示十六进制数。例如,32、040、0x20分别以十进制、八进制、十六进制表示同一个值。l或L前缀表明该值是long类型, ll或LL前缀表明该值是long long类型。
在C语言中,直接表示一个字符常量的方法是:把该字符用单引号括起来,如’Q’、‘8’和’$’。C语言的转义序列(如,’\n’)表示某些非打印字符。另外,还可以在八进制或十六进制数前加上一个反斜杠(如,’\007’),表示ASCII码中的一个字符。浮点数可写成固定小数点的形式(如,9393.912)或指数形式(如,7.38E10)。C99和C11提供了第3种指数表示法,即用十六进制数和2的幂来表示(如0xa.1fp10)。printf()函数根据转换说明打印各种类型的值。转换说明最简单的形式由一个百分号(%)和一个转换字符组成,如%d或%f。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值