C语言程序设计(16)

136 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第20天,点击查看活动详情
逃逸字符

image.png

关于\b

#include<stdio.h>
int main()
{
    printf("123\b\n456\n");
    return 0;
}

image.png image.png (在不同的编译器运行结果的样子是不一样的)

结果不一样的原因?

在运行C语言时会有一个黑色的窗口,称其为终端,从根本上看,这个黑色的窗口是一个程序,它会在背后执行我们所写的程序,我们所做的输入和接受的输出都是通过这个黑色窗口来表达出来的,黑色窗口将我们的输入传输给程序,将程序的输出呈现给我们,当程序中有\n、\b,等时,有一些黑色窗口中的程序会通过一些方法向用户呈现出来,但在不同的编译器中终端的不同会导致呈现的效果不同,甚至不会呈现,就像\b代码中的第二个运行结果。

printf("123\bA\n");

image.png

所以说\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。