开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第20天,点击查看活动详情
逃逸字符
关于\b
#include<stdio.h>
int main()
{
printf("123\b\n456\n");
return 0;
}
(在不同的编译器运行结果的样子是不一样的)
结果不一样的原因?
在运行C语言时会有一个黑色的窗口,称其为终端,从根本上看,这个黑色的窗口是一个程序,它会在背后执行我们所写的程序,我们所做的输入和接受的输出都是通过这个黑色窗口来表达出来的,黑色窗口将我们的输入传输给程序,将程序的输出呈现给我们,当程序中有\n、\b,等时,有一些黑色窗口中的程序会通过一些方法向用户呈现出来,但在不同的编译器中终端的不同会导致呈现的效果不同,甚至不会呈现,就像\b代码中的第二个运行结果。
printf("123\bA\n");
所以说\b通常做的事情是返回但不删除,此行代码在返回后会输出A,所以导致A会覆盖掉原来的3(但完全有可能有一个终端判定\b是返回而且删除)。
制表位
每行固定的位置;
一个\t使得输出从下一个制表位开始;
用\t才能使得将上下两行对齐。
回车换行
源自于打字机的动作;
终端会将程序中的\n看作进行回车换行两个动作。
自动类型转换
当运算符的两边出现不一致的类型时,会自动转换成较大的类型。
大的意思是能表达的数的范围更大。
char->short->int->long->long long
int->float->double
对于printf,任何小于int的类型会被转换成int;float会被转换成double;
但是scanf不会,要输入short需要%hd,输入long long需要%ld。