注:实验环境
Windows 11 系统
Visual Studio 2019
1. 常用的计算机单位
bit (比特位) ——可存放1个二进制位
byte (字节) —— = 8 bit
kb (千字节) —— = 1024 byte
mb (兆字节,兆) —— = 1024 kb
gb (吉字节,千兆) —— = 1024 mb
tb (万亿字节,太字节) —— = 1024 gb
pb (千万亿字节,拍字节) —— = 1024 tb
2. 数据类型
类型 | 类型说明符 | 例子 | 输出形式 | 字节数 | 取值 |
---|---|---|---|---|---|
字符数据类型 | char | char ch = 'a'; | 字符:“%c\n” 字符串:“%s\n” | 1 | |
短整型 | short | short num = 10; | “%d\n” | 2 | 5位十进制数 |
整形 | int | int pai = 7; | “%d\n” | 4 | 10位十进制数 |
长整型 | long | long num1 = 7899 | “%d\n” | 4 | 10位十进制数 |
更长的整形 | long long | long long num2 = 74897 | “%d\n” | 8 | 20位十进制数 |
单精度浮点数 | float | float weight = 60.4 | “%f\n” | 4 | |
双精度浮点数 | double | double d = 0.0 | “%lf\n” | 8 |
计算数据类型的长度可以通过以下代码实现:
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long)); //C语言标准:sizeof(long) >= sizeof(int)即可
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
} /*输出结果为 1
2
4
4
8
4
8*/
3. 字符串
用双引号引起来的一串字符称为字符串字面值,简称字符串。 //例:“good morning.\n”
每个字符串结束的标志为一个 \0(即每个字符串结尾都隐藏了 \0) 的转义字符,\0 只是结束标志,不计算在字符串长度内。
通过以下代码可以突出 \0 的重要性:
//突出\0的重要性
#include <stdio.h>
int main()
{ //arr1-3为数组,数组即一组相同类型的元素
char arr1[] = "efg"; //数组内有4个元素,为efg\0
char arr2[] = { 'a','b','c' }; //数组内有3个元素
char arr3[] = { 'a','b','c','\0' }; //数组内有4个元素
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
} /*输出结果为 efg
abc烫烫烫烫蘣fg
abc*/
//arr2输出结果之所以乱码是因为没有 \0 结束标志
通过以下代码计算字符串的长度:
//求字符串长度
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] = "hello";
char arr2[] = { 'h','e','l','l','o'};
char arr3[] = { 'h','e','l','l','o','\0'};
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
printf("%d\n", strlen(arr3));
return 0;
} /*输出结果为5
21
5*/
// \0不计算在长度内
// 由于arr2[]没有以\0结尾,因此输出长度值为随机值
4. 常用转义字符
转义字符 | 释义 | 例子 |
---|---|---|
\? | 书写多个问号时,防止被解析成三字母词 | ??) 为三字母词,输出为 ] \?\?) 输出为 ??) 例:printf("(are you ok??)"); 输出为 (are you ok??) |
\' | 用于表示字符常量' | printf("%d\n", '\''); 输出为 ' |
\" | 用于表示一个字符串内部的双引号 | printf("%d\n", "\""); 输出为 " |
\a | 警告字符,发出蜂鸣声 | printf("%d\n", "\a"); 输出为 电脑会发出蜂鸣声 |
\n | 换行 | |
\t | 水平制表符,相当于键盘上的Tab键 | printf("%c:\hello\text.c\n"); 输出为 c:hello ext.c |
\v | 垂直制表符 | |
\ddd | ddd 表示1-3 个八进制的数字 | printf("%c\n", "\130"); 输出为 X printf("%c\n", "\65"); 输出为 A |
\xdd | dd 表示2个十六进制数字 | printf("%c\n", "\x30"); 输出为 0 |
\b | 退格符 | |
\f | 进纸符 | |
\r | 回车 |