exit和return⚠️ 此博客为本人21届专升本C语言学习时针对错题的知识点笔记,具有很强的个人色彩,不具备完整性、通用性、有效性,望周知。祝为了升本梦努力拼搏的学弟学妹成功上岸!🧑🎓
- exit(1)表示异常退出
- exit(0)表示正常退出
- exit是在调用处强行退出程序,运行一次程序就结束
- return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
- return是返回函数调用,如果返回的是main函数,则为退出程序
转义字符
转义字符以\
或者\x
开头,以\
开头表示后跟八进制形式的编码值,以\x
开头表示后跟十六进制形式的编码值。对于转义字符来说,只能使用八进制或者十六进制。
转义字符的初衷是用于 ASCII 编码,所以它的取值范围有限:
- 八进制形式的转义字符最多后跟三个数字,也即
\ddd
,最大取值是\177
; - 十六进制形式的转义字符最多后跟两个数字,也即
\xdd
,最大取值是\x7f
。
单引号、双引号、反斜杠是特殊的字符,不能直接表示:
- 单引号是字符类型的开头和结尾,要使用
\'
表示,也即'\''
; - 双引号是字符串的开头和结尾,要使用
\"
表示,也即"abc\"123"
; - 反斜杠是转义字符的开头,要使用
\\
表示,也即'\\'
,或者"abc\\123"
。
#include <stdio.h>
int main(){
puts("C\tC++\tJava\n\"C\" first appeared!");
return 0;
}
C C++ Java
"C" first appeared!
转义字符以十六进制描述时前面不能加0。
变量命名
C语言大小写敏感
教材中只是强调首字符必须为字母, 我们应当知道, 在语言系统中, 下划线和字母具有同等的“效力”
- 诸如
-0xfff
十六进制数本身已经包含了符号位, —般不 前面加符号位, 但加上符号位也不错误 - 0668 在有些C系统中, 八进制数中允许出现8, 但是通常不允许使用8
0x
显然后面缺少数值, 但在TC中是允许的OXcdf
中 X大写也可
指数形式
由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。
其一般形式为:
a E n(a为十进制数,n为十进制整数) 其值为 a10n。
如: 2.1E5 (等于2.1105) 3.7E-2 (等于3.710-2) 0.5E7 (等于0.5107) -2.8E-2 (等于-2.810-2)
以下不是合法的实数: 345 (无小数点) E7 (阶码标志E之前无数字) -5 (无阶码标志) 53.-E3 (负号位置不对) 2.7E (无阶码)
计算规则
- C语言浮点型数据不能直接取余(%),可以通过取出整数位/强制转换成int型/库函数等方式进行取余
- C语言没有根号符号
- 表达式中的各字符以各自的ASCII码值参与运算
int main()
{
char x = 'A';
char a = 'z';
char c = x - a;
printf("%d\n", c);//-57
return 0;
}
- 算术表达式的类型由表达式计算结果的类型决定
sizeof(float) //一个整型表达式
在表达式中,当不同类型的数据混合在一起进行运算时,系统会按照自动转换规则,将操作数由低类型向高类型转换。例如:
int a;
float f;
double b;
表达式10+a+b+f的数据类型为 double
- 实型只要参与运算就自动转换为double型
C 数学库函数
double sqrt(double x) //该函数返回 x 的平方根。
int abs(int x) //该函数返回 x 的绝对值。
double fabs(double x) //该函数返回 x 的绝对值。
double pow(double x, double y) //该函数返回 x 的 y 次幂的结果。
c语言中整型和实型的绝对值函数各自独立,为abs 和fabs;pow为一系统函数pow(y,x)=>y^2
字符(串)操作
字符输入/出函数
getchar()一次读入一个字符
putchar()一次输出一个字符
字符串输入函数
-
gets()函数无法处理缓冲溢出,不会保留读入的换行符
-
fgets()函数通过参数限制读入的字符数,fgets()会保留读入的换行符
scanf()函数只读取单词,无法读取空白
字符串输出函数
- puts()函数会自动添加换行符
- fputs()可以输出到文件,不添加换行符
- printf()函数输出多种数据
常用字符串函数
- strlen()获取字符串长度
- strcat()和strncat() 拼接字符串
- strcmp()与strncmp() 比较字符串
- strcp()与strncp() 复制字符串
- sprintf()合并多个元素
文件输入输出
文件输出函数
- fprintf()函数
- fputs()函数
文件输入函数
- fscanf()函数
- fgets()函数
文件随机模式
- fseek()和ftell()函数
- fgetpos()和fsetpos()函数
二进制读写函数
- fread()函数
- fwrite()函数
其他常用函数
- ungetc()
- fflush()
- setbuf()
其他:
计算机系统不能存储字符本身, 存储的是字符的 ASCII码。
在16位系统下:
- char 1字节
- int 2字节
- long 4字节
- float 4字节
- double 8字节
printf()格式中的长度修饰符:
1、%L修饰符(注意大写的L):和浮点转换说明符一起使用,表示一个long double值。
示例:“%Lf”和“%10.4Le”
注:%l的修饰符(小写的l):和整数说明符一起使用,表示一个long int 或者unsigned long int 类型值。
示例:“%ld”和“%8lu”。
2、%h修饰符:和整数转换说明符一起使用,表示一个short int 或者 unsigned short int 类型数值。
示例:“%hu”、“%hx”和“%6.4hd”
3、#要求输出数据的类型特征符号,如%#x意思是带格式0x的16进制输出
int main()
{
int y = 2456;
printf("y=%#8o\n", y);//y= 04630 空3格
//printf("y=%8o\n", y);//y= 4630 --空4格
return 0;
}
4、占位符
例如%7.2f指的是格式化为float的浮点数格式。
- 其中的7指的是最后输出总的占位符为7位,包含小数点,小数点也占一位,不足时前面补上空格符,缺几个补几个。
- 其中的.2指的是保留最后的2位小数。
- 比如%7.2f的2.5输出就是:(加号代表空格符)+++2.50。
- 如果超出宽度则按实际输出
(scanf)输入实型数据时,不能限定输入数据的宽度与小数点位数。输入无法控制,只有输出可以。
在C系列语言中赋值语句就是赋值表达式加一个分号。
用计算机高级语言编写的程序一般称为源程序(代码)。