C Primer Plus 读书笔记02 数据类型

1.C的数据关键字

1.K&R标准

int

基本的整数类型.

long
short
unsigned

用于提供基本类型的变种.

char

表示字母及其他字符,也可以表示小的整数.

float
double

表示带小数点的整数.

2.C90

signed
void

3.C99

_Bool

表示布尔值.

_Complex

表示复数.

_Imaginary

表示虚数.

以上类型按在计算机中的存储方式被划分为两个系列,整数(integer)和浮点数(floating-point).

2.位,字节,字:

1.位,bit计算机存储的基本单位.
2.字节,byte,几乎对所有的机器,一个字节均为8位.可表示0~255.字节的标准定义.
3.字,word.对于一种给定的计算机设计,字是自然地存储单位,不同机器字的大小不同,8~64位不等.

3.整数类型与浮点数类型的存储方式.

1.整数 integer - 没有小数部分的数.
2.浮点数 float-point 可以和数学中的实数(real number)概念相对应,实数包含了整数之间的那些数.
3.16E7 = 3.16 x 10的7次方..浮点数与整数的存储方案不同.浮点数表示法将一个数分为小数部分和指数部分分别存储,如存储3.1415926.


3.总结:

1.某些算数运算,使用浮点数会损失更多精度.

2.任何区间内存在无穷多个实数,所以计算机浮点数不能表示区域内所有的值,浮点数往往是实际值的近似.如:7.0可能以6.99999 存储.

4.C数据类型

1.整数类型

C的各种整数类型的区别在于所提供数值的范围,以及数值是否可以取负值.

1.int 有符号整数,int类型的值必须是证书,可以正,负或0.取值范围依赖于计算机系统.

2.int 类型存储在计算机的一个字(word)中.

3.初始化(initialize)int dogs = 32;

4.打印:%d指定证书在行中的打印位置,%d为格式说明符(format specifier)

 +-------- 进制 --------+--- 缩写 ---+--- 前缀 ---+--- 占位符 ---+--- C语言风格 ---+

    |         十进制          |      dec      |                  |     %d        |            %#d       |

    |-----------------------------------------------------------------------------------------------|

    |         八进制         |      octal    |        0        |        %o     |          %#o         |  
     |-----------------------------------------------------------------------------------------------|

    |         十六进制     |      hex      |        0x      |        %x     |          %#x          |  
    |-----------------------------------------------------------------------------------------------|

十进制 decimal  十六进制 Hexadecimal  八进制 Octal 二进制 Binary

5.附属关键字修饰的整数类型:

1.short long unsigned 等.C99增加 unsigned long long int类型.

2.long 不会比int长,short 不会比int短,为了适应不同的机器.

3.目前一般情况,long long 64位,long 32位,short 16位.int 为16位或32位(依机器的自然字大小而定).

6.整数溢出:

1.无符号的溢出后到0;

2.有符号的溢出后到最小的负数.

7.类型调用,编译器的编译策略:

1.int 存储不了 -> long int型 (数字大于long类型最大值) -> unsigned long (仍然不够) -> long long 类型 -> unsigned long long; 

2.使用一个long类型来存储一个较小的整数.加上L后缀.例:

int 类型为16位,long 类型为32位系统中,7 保存为16位,7L存储为32位.对八进制和十六进制数同样适用,如:020L和0x10L.

3.相应的long long 类型加上LL后缀.unsigned long long 加上 ull LLU Ull 等.

4.打印(常量后缀可以使用大写小写,格式说明符只能适用小写字母):

%u unsigned int

%ld long int

%lx long int 以十六进制打印长整数

%lo long int 以八进制打印长整数

相应的 %hd short int %hx %ho 等.

5.char类型,用于存储字母和标点符号之类的字符,实际存储的是整数而不是字符.通常定义为8位内存单元.

1.ASCII码的范围0~127;

2.商用的Unicode字符集超过96000个字符,兼容ISO/IEC 10646标准,所以采用上述字符集的平台应该使用16位甚至32位的char表示方法.因为C把一个字节  (byte)                              定义为char类型使用的位数(bit)数.所以这样的系统上C提到的一个字节是16位或者32位.

3.赋值:char grade = 'A';

4.C将字符常量视为int类型而非char类型.如int 为32位,char 为8位的ASCII系统中:

 char cChar = 'FATE';  //'FATE'存储在32位单元中

 cChar 将'FATE'存储在8位单元中,所以赋值后cChar = 'E';

5.char转义字符

' -> \'  \ -> \\" -> \" 

 \0oo 以一个八进制表示字符,前缀0可以省略.

\xhh 以一个十六进制表示字符.

printf 使用%d 打印char 说明打印char变量,%c表示打印编码值等于那个整数的字符.可通过limits.h文件查看char的类型,是有符号型还是无符号型. 

C90标准允许char 前使用signed 和 unsigned指明有符号型还是无符号型.


_Bool型,表示逻辑值true和false.由C99标准引入,C用1表示true,用0表示false,实际上也是一种整数类型,原则上仅需要1位来存储.

6.可移植类型inttypes.h

C99提供了一个可选名字集合,如:int16_t表示有符号16位整数,uint32_t无符号32位整数.

      如需这些名字有效,应当在程序中包含inttypes.h头文件.(exact width type)确切长度类型

      C99提出第二组名字集合(minimum width type)最小长度类型,至少大于指定长度的最小类型.如:int_least8_t

      C99 可使计算速度达到最快的类型集合,"最快最小长度类型"(fastest minimum width type).如:int_fast8_t,系统中对8位有符号数而言计算最快的整数类型的别名.

      C99定义的系统最大的可能整数类型,intmax_t最大的有符号整数类型.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值