-
NULL,0,'\0',‘0’
int main() { char arr[] = {0, '\0', '0', 48}; printf("%c\n", arr[0]); printf("%c\n", arr[1]); printf("%c\n", arr[2]); printf("%c\n", arr[3]); printf("---------------\n"); printf("%d\n", arr[0]); printf("%d\n", arr[1]); printf("%d\n", arr[2]); printf("%d\n", arr[3]); return 0; }
输出:
0 0 --------------- 0 0 48 48
-
UTF-8 向下兼容 ASCII 编码,UTF-8 编码中,一个英文字为一个字节,一个中文一般为三个字节(ASCII、Unicode、UTF-8)
- 0xxxxxxx:单字节编码形式,这和 ASCII 编码完全一样,因此 UTF-8 是兼容 ASCII 的;
- 110xxxxx 10xxxxxx:双字节编码形式;
- 1110xxxx 10xxxxxx 10xxxxxx:三字节编码形式;
- 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx:四字节编码形式;
- UTF-8:每字 1 ~ 6 字节
- Unicode(UCS-2):每字都是 2 bytes
- UTF-16:每字 2 ~ 4 字节
- UTF-32(UCS-4):每字都是 4 bytes
-
float 单精度,浮点数在内存中是按科学计数法来存储的,小数点后6位能确定表示,float 是由 1 bit 符号位,8 bit 指数位和 23 bit 尾数位组成,精度是由尾数位决定的(2^23 = 8388608)
bool test(float a, float b){ float t = (a + b) - a - b; cout << t << endl; return t == 0; } int main() { // 第五位及以后的数字,大于等于 8 的数字就不稳定了 cout << test(1.12348, 2.12348) << endl; return 0; }
输出:
-2.38419e-07 0
-
double 双精度是由 1 bit 符号位,11 bit 指数位和 52 bit 尾数位组成
-
IPv4 地址由 4 部分组成,每部分 8 bit,一共 32 bit,每部分用 10 进制表示,中间用 . 隔开
-
IPv6 地址由 8 部分组成,每部分 16 bit,一共 128 bit,每部分用 16 进制表示,中间用 : 隔开