变量/常量:值是否可以在程序运行过程中指定与变化。
变量 = 数据类型 + 地址。 数据类型 = 字节数 + 编码规则;地址 = 首字节的内存地址。
字节数: 整型:short/int/long; 浮点型:float/double; 字符:char。
编码规则: 整型:二进制编码; 有符号/无符号:最高位负权/正权。 浮点型:符号位、阶码、尾数。
基本数据类型:
关键字 | 典型字节数(x86-32/64) | 编码规则 |
---|---|---|
short | 2 | 二进制编码 |
int | 4 | |
long | 4/8 | |
signed | 最高位负权 | |
unsigned | 最高位正权 | |
float | 4 | 符号位、阶码、尾数 |
double | 8 | |
char | 1 | ASCII码 |
源代码 进制、数据类型 内存 进制、数据类型 交互界面。
进制:
进制 | 前缀 |
---|---|
二进制 | 0b |
八进制 | 0 |
十进制 | 无 |
十六进制 | 0x/0X |
进制仅影响源代码层、交互界面层数据的输入和显示。无论何种进制的数,在内存中均按照数据类型定义的字节数和编码规则以二进制的形式存储。
进制影响的是程序对值的识别、显示方式,数据类型影响的是存储范围、编码规则、精度。
针对常量,编译器一般通过书写形式来辨别其类型。 整数:2、-7;浮点数:2.75、7.、.6、2E5、3.16E7、2e-8;字符:‘A’、‘\n’、‘\\’; 十进制整数常量一般依次以int、unsigned int、long、unsigned long类型存储,可通过后缀u/U、l/L的方式,强制编译器以无符号或长整型的类型存储。八进制、十六进制整数常量一般以unsigned int类型存储。 字符常量以int类型存储。 浮点常量默认以double类型存储。可通过后缀f/F的方式,强制编译器以float类型存储。
字符实际上以编码值(整数)的形式存储,char实现上是整数类型。根据实现不同,默认为unsigned char或signed char。C标准中,字节(byte)被定义为char类型所使用的位(bit)数,一般为8位。
转义序列:以反斜杠\开始的、用于表示单个特殊字符的符号序列。多用于表示非打印字符。
无论是普通字符还是转义序列,若作为双引号中字符串的一部分,则无需单引号。
当用常量为变量赋值时,若数据类型不匹配,C会隐式地对常量进行类型转换,这可能导致预期外的结果。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。