C语言-逃逸字符
逃逸字符是用来表达无法印出来的控制字符或者特殊字符,它由一个反斜杠“”开头,后面跟上另一个字符,这两个字符合起来,组成一个字符。
\b是backspace,在sublime中显示为BS,如果后面不输入的,它就什么结果都没有,如果输入的话会覆盖回退前的那个字符。所以\b是回去但不删除,它由的终端可能是删除。
#include <stdio.h>
int main()
{
printf("123\b\n456");
return 0;
}
//结果:123
//456
//换成printf("123\bA\n456");
//结果:12A
//456
\t:使得输出从下一个制表符开始,这样使得上下两行对齐。
回车和换行来源于古老的打印机,打字从一侧打到另一侧用手推回原位叫回车,然后再换行。注意:平时我们只打/n就换行了,是因为shell一般会将其翻译为回车换行
C语言-类型转换
自动类型转换
当运算符的两侧出现不一致的类型时,会自动转换成较大(或较宽)的类型,大的意思是说能表达的数的范围更大。
char->short->int->long->long long
int->float->double
对于printf,任何小于int的类型都会被转换成int;float会被转换成double,这也是为什么在printf时直接使用%f就足以输出double,不用%lf的原因,但是scanf不会,要输入short,它要明确知道后面变量的大小,需要%hd。
强制类型转换
- 要把一个量强制转换成另一个类型(通常是较小的类型),需要,(类型)值。比如:(int)10.2;(short)32。但注意这时候的安全性,小的变量不总能表达大的变量。例如short(32768),short最多只能表达32767,所以此时的结果就是-32768,char(32768)的结果是0,因为32768是15个bit的0,第16是1,对于char来说取最低的那8个bit就只能看到0。
- 强制转换只是从那个变量计算出了一个新的变量类型的值,它并不改变那个变量,无论是值还是类型都不改变。
- 强制类型转换的优先级高于四则运算。
C语言-布尔类型
include <stdbool.h> ,之后就可以使用bool和true、false
- 实际上没有真正的布尔类型,它还是整数,因此在输入输出的时候,并没有特殊的形式输入输出布尔量,只能把它输出一个整数。