3.1 示例程序
3.2 变量与常量数据
常量:数据类型在程序运行之前已经预先设定好,在整个程序的运行过程中没有变化(也不能被改变)。
变量:数据类型在程序运行期间可能会改变或被赋值。
3.3 数据:数据类型关键字
表 3.1 C 语言的数据类型关键字
| 最初的 K&R 给出的关键字 | C90 标准添加的关键字 | C99 标准添加的关键字 |
|---|---|---|
| int | signed | _Bool |
| long | void | _Complex |
| short | _Imaginary | |
| unsigned | ||
| char | ||
| float | ||
| double |
位(bit):**最小存储单元;
字节(byte):**常用的计算机存储单位,一般
1字节为8位;字(word):**设计计算机时给定的自然存储单位;
3.4 C 语言基本数据类型
-
int 类型
有符号整型,可以是正整数、负整数或零。取值范围依计算机系统而异。一般存储一个
int要占用一个机器字长。整型常量或整型字面量:21、33。
0x/0X前缀表示十六进制;0前缀表示八进制。 -
其他整型类型
short int/short、long int/long、long long int/long long、unsigned int/unsigned。C90添加了unsigned long int/unsigned long、unsigned int、unsigned short类型。C99又添加了unsigned long long int/unsigned long long类型。l/L后缀表示long类型;ll/LL后缀表示long long类型。C 标准只规定了
short <= int <= long。C 标准只规定了基本数据类型的最小取值范围。
C 标准并未规定有符号类型的溢出规则。
-
char 类型
占用 1 字节。
字符常量:
'A'、'X'。 _Bool 类型(C99)
-
可移植类型:stdint.h 和 inttypes.h(C99 和 C11)
精确宽度整数类型(exact-width integer type):**
int32_t、uint32_t;最小宽度类型(minimum width type):**
int_least8_t;最快最小宽度类型(fastest minimum width type):**
int_fast8_t;打印
int32_t使用PRId32字符串宏,会自动替换为"d"/"ld"如:printf("int32_t: %" PRId32 "\r\n"); -
浮点数
float、double和long double浮点数常量:
-1.56E+12、2.87e-3、3.14159、.2、4e16、.8E-5、100.。默认为double类型。f/F后缀表示float、l/L后缀表示long double类型。上溢(overflow):**会赋一个表示
无穷大的特定值,用printf会显示为inf或infinity;下溢(underflow):**损失了类型全精度的浮点值为
低于正常的(subnormal)浮点值;NaN(not a number):特殊的浮点值,表示无效,用
printf会显示为nan、NaN或其他类似内容。浮点数运算要时刻注意精度问题。浮点计算标准
ISO/IEC/IEEE 60559:2011,C99和C11可选支持。 -
复数和叙述类型
复数:
float_Complex、double_Complex和long double_Complex;虚数:
float_Imaginary、double_Imaginary和long double_Imaginary。
3.5 使用数据类型
3.6 参数和陷阱
注意用 printf 时参数个数和数据类型要一致。
3.7 转义序列示例
"\n" 会刷新输出缓冲区,或者调用 fflush()。