初识C语言第4课—输出类型格式与转义字符

1.输出类型格式

  C语言中常见的输出格式有以下几种。

输出形式含义
%d表示按照十进制整型输出
%c表示按字符类型输出
%s表示按字符串类型输出
%f表示按float浮点数类型输出
%lf表示按double浮点数类型输出

  通过以下一段代码我们能更清晰直观的看到每个输出类型。

#include <stdio.h>
int main()
{
	printf("%d\n", 20);
	printf("%c\n", 'a');
	printf("%s\n", "abcd");
	printf("%f\n", 3.14);
	printf("%.12%lf\n", 3.141592678923);
	return 0;
}

  代码运行结果如下。
在这里插入图片描述
  这里float和double类型一般默认输出到小数点后六位当在%后加上.12时编译器就会输出小数点后12位,其中double类型的范围比float大,两者的区别如下。

类型floatdouble
取值范围-3.4E ^ 38 ~ 3.4E ^ 38-1.79E ^ 308 ~ 1.79E ^ 308
占用字节4个(32位)8个(64位)

  如果想要更改输出整型的数或者对齐,可在%后加上对应的参数
在这里插入图片描述

2.转义字符

  C语言中常见的转义字符如下。

转义字符含义
\?书写连续多个问号时使用,防止它们被解析为三字母词
\’用来表示字符常量‘
\"用于表示一个字符串内部的双引号
\\用来表示一个反斜杠,防止它被解析为一个转义序列符
\n换行
\a警告字符
\b退格符
\f换页符
\r回车符
\t水平制表符
\v垂直分隔符
\dddddd表示1-3个八进制的数字
\xdddd表示2个十六进制的数字

  接下来我将详细介绍每个转义字符。

  • \?  书写连续多个问号时使用,防止它们被解析为三字母词

  接下来我将用一段代码来帮助我们加深理解。

#include <stdio.h>
int main()
{
	printf("%s\n","(are you ok ??)");
	//在支持三字符词的编译器上会打印(are you ok ??]

	//为了避免这种情况,通常在?前面加上反斜杠'\'
	printf("%s\n","(are you ok \?\?)");
	return 0;
}
  • \’  用来表示字符常量
#include <stdio.h>
int main()
{
	//打印字符'a'
	printf("%c\n", 'a');

	//打印字符 '
	printf("%c\n", ''');//编译器会报错

	//因此需加反斜杠'\',防止其无法被解析
	printf("%c\n", '\'');
	return 0;
}
  • \"  用于表示一个字符串内部的双引号

  假如我们要打印一个“Hello World!!!”
在这里插入图片描述

  •  \\  用来表示一个反斜杠,防止它被解析为一个转义序列符
  •  \n  换行

  假如我们要打印字符串“abcdef”

#include <stdio.h>
int main()
{
	//加\n(换行)的区别
	printf("abcdef");
	printf("------------\n");
	printf("abcdef\n");
	printf("------------\n");
	//加双斜杠(防止过定义)的区别
	printf("abcd\0ef\n");
	printf("\n............\n");
	printf("abcd\\0ef\n");
	return 0;
}

  代码运行结果如下。
在这里插入图片描述
  从以上结果我们可以看出加\n(换行)的区别;而对于下面的字符串,由于字符串是以‘\0’结尾的当编译器读到‘\0’后会自动跳出,但当我们加上双斜杠‘\\0’后,其不会被解析为‘\0’,编译器也不会跳出,从而输出’abcd\0ef’.

  • \a  警告字符,会使得终端发出警报声或者出现闪烁.
  • \b  退格符,光标回退一个字符,但不删除字符.

  下面我将通过运行一段代码来进行验证.
在这里插入图片描述
  从代码的运行结果可以看出,加入退格符‘\b’之后,字母‘d’未输出,但它仍在内存里.

  • \f  换页符,光标移动到下一页,如今的编译器已无法验证.
  • \r  回车符,光标移动到同一行的开头.
  • \t  水平制表符,光标移动到下一个水平制表位,通常是4/8的倍数.
  • \v  垂直分隔符,光标移动到下一个垂直制表位,通常是下一行的同一列.

  下面主要介绍‘\t’水平制表符.

#include <stdio.h>
int main()
{
	printf("aa\tbbbb\tcccccc\t\n");
	return 0;
}

  代码运行后的结果如下.
在这里插入图片描述

  • \ddd  ddd表示1—3个八进制的数字.
  • \xdd  dd表示2个十六进制数字.

  接下来我将通过一段代码来验证.

#include <stdio.h>
int main()
{
	printf("%c\n",'\130');
	printf("%c\n", '\x30');
	return 0;
}

  代码运行结果如下.
在这里插入图片描述
  为什么会出现字符‘X’和数字‘0’呢?其中八进制数130转换为十进制数88,在ASCII码表里刚好对应的字符就是‘X’;同理十六进制数30转换为十进制数48,对应ASCII码表的数字‘0’.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值