数据关键字
在C语言的C99规范中,C语言一共有12个和数据相关的关键字,分别是:
-
int: 整型数据类型,最常见的一种数据类型。一般来说,在现在64位系统普及的今天,一个
int
是占4个字节,也即32个bit. -
long: 长整型数据类型,一个
long
一般占8个字节,也即64个bit. -
short: 短整型数据类型,一个
short
一般占2个字节,也即16个bit。这种类型一般是用在明确知道数据不会太大的基础上的,主要是为了节省空间。另外需要注意的是,这里的short
类型是有符号 的,过去我一直错误地认为short
是无符号的。 -
unsigned: 无符号类型,这才是真正的无符号类型,其实它是
unsigned int
的简写,所占字节数是和int
一致的,但是却是非负的,这主要是用在某个变量不可能出现负值的情况下,比如在计数的时候,它能取得比int
还要大的正数。 -
char: 字符类型,其实本质也是整数类型。一个
char
占1个字节,即8个bit,因为ASCII码的范围是0-127,因此只需要8个bit就能表示了.对于字符和字符串来说,还有一点要注意的是,在C中,单引号中的一定是字符,而双引号中的一定是字符串。 -
float: 浮点数,一般来说占4个字节,32个bit,能够保持6位有效位。
-
double: 双精度浮点数,一般来说占8个字节,64个bit,能够保持10位有效位。
-
signed: 有符号类型,通常可以和任何有符号的类型放在一起使用,只是为了强调有符号,使得数据类型更加明确。
-
void: 空类型。
-
_ Bool: 布尔类型。True和False
-
_ Complex : 复数类型。
-
_ Imaginary : 虚数类型。
需要注意的是,这里的int
,long
,short
所占字节数并不是固定的,不同的系统,不同的编译器在细节上可能会有不同的处理,但是C有如下的规定:
C保证short
不会比int
且long
不会比int
短
在C语言中,sizeof
关键字通常是用来获取数据的大小的,它以字节为单位给出数据的大小,返回的的数据类型是long unsigned int
类型,在用printf()
函数输出的时候,格式化字符应该是%lu
,如果只用%d
的话,编译器会报警告,但这不是错误。
常量
关于常量其实没什么好说的,唯一值得注意的是有关后缀的问题。可以通过在一个常量末尾添加特殊符号来指定其数据类型。
对于小数常量来说,如果后缀是f
或F
,则该常量会被当做float
类型;如果后缀是l
或L
,则该常量会被当做long double
;如果没有后缀则是double
.
对于整数来说,如果后缀是l
或L
,则该常量会被当做long
;没有后缀则是int
输出
关于格式化输出的部分,我也不想多说什么,都是比较简单的,这里想记录的是,何时会刷新缓冲区。刷新缓冲区主要有3种情况:
- 缓冲区满了
- 遇到换行符了
- 需要等待用户输入字符的时候。
参考资料
- 《C Primer Plus》第三章