栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

初阶C语言/printf函数、格式字符、转义字符

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初阶C语言/printf函数、格式字符、转义字符

前言

以下均使用Visual Stdio 2022集成开发环境,内容仅适用于初学者。本章内容为零散知识点,目的是为了让读者更加深入理解某一方面的知识。


目录

一、printf函数的输出形式

Ⅰ、printf函数输出格式

Ⅱ、printf 函数的右结合性

Ⅲ、printf函数中自增自减的复合运算

二、格式字符

Ⅲ、转义字符


一、printf函数的输出形式

Ⅰ、printf函数输出格式

printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。当我们需要使用时需要引入stdio.h头文件。printf函数的一般调用形式如下:

 printf(“格式控制字符串”, 输出表列);

如下

#include 
int main()
{     
	int a = 1;
	int b = 2;
	printf("a的值为%d b的值为%dn", a, b);
	printf("a+b的值为%dn", a + b);
	printf("%dn", 23);
	printf("%d %d %d", a, b, a + b);
	return 0;
}

结果为

 ①n为转义字符,详见目录->转义字符。

②%d为格式字符,详见目录->格式字符。

③双引号内容为打印内容。格式字符,格式字符对应输出列表的变量(按顺序一一对应),%d为十进制整数输出。转义字符,转义字符n意思是打印到n这个位置时光标移动到下一行。

④输出列表中的数据可以为变量、常量、表达式。

Ⅱ、printf 函数的右结合性

右结合性就是输出列表的运行顺序,如下

#include 
int main()
{     
	int a = 10;
	int b = 0;       //等号表达式的值为左边的值
	printf("%d %d ", b = a + 10, a = b + 1);
	return 0;        //即b = a + 10 可以用a+10代替                     
}                    //只不过在列表中b的值已经被改变

 结果为

当printf中参数列表是从左边向右边运行时,输出应该为 20 21

当printf中参数列表是从右边向左边运行时,输出应该为 11 1

所以printf函数具有右结合性。

Ⅲ、printf函数中自增自减的复合运算(可略过)

那么有争议的问题来了!

#include 
int main()
{     
	int a = 10;
	printf("%d %d %d %d %d %d", a++, a, --a,  a--, a++, ++a);
	return 0;                  //⑥   ⑤   ④    ③     ②    ①
}

结果为

自增自减运算符加入到printf函数中就变得不一样了,由于程序从右向左运行,运行流程如下。

①前置++,首先a的值先+1 ,此时a = 11并留置(不作为格式字符真实值)在此。(留置产生,所以11作为真实值并打印。)

②后置++,运行程序前a的值为11,然后将11作为格式字符的真实值,运行之后a = 12。(打印11。)

③后置--,运行程序前a = 12 ,然后将12作为格式字符的真实值,运行后a = 11。(打印12。)

④前置--,运行程序前 a = 11,然后自减 a = 10,并留置在此。(留置产生,所以11作为真实值并打印。)

⑤无任何操作,a = 10留置在此。(留置产生,所以11作为真实值并打印。)

⑥后置++,运行程序前a = 10,然后将a作为真实值打印。a自增 a = 11。(打印10。)

输出列表扫描完毕,a最终的结果为11,最后将11作为以上操作留置后的真实值。

总结:在printf函数中遇见自增自减运算符时,只需要知道后置++和后置--不需要留置,其他的都需要将a的结果算出来,然后再填充到留置的区域。

注:以上结果在Visual Studio 2022实验的结果,因为涉及到自增自减的复合运算,不同的编译器给出的解决方案不同,所以得出的结果不同,以上我们只需要知道printf函数具有右结合性就行了,类似于这种自增自减的复合运算的代码,正经的程序员根本就不会写这种垃圾代码,因为不具有普遍性,当然在朋友面前装一下还是可以的(。ӧ◡ӧ。)。

二、格式字符
格式字符含义
%d以十进制整数形式输出
%ld以十进制长整形输出
%f以单精度浮点型输出
%lf以双精度浮点型输出
%o以八进制整型输出整数。
%x或%X以十六进制形式输出整数
%u以十进制无符号整形输出
%i以十进制整形输出(与%d无异)
%c输出单个字符
%s输出字符串
%e或%E以指数形式输出
%g或%G

自适应数据输出(数据够大或够小

则以指数形式输出,否则以小数

形式输出

%p输出地址

① 对于%f与%lf如下,当违背以下准则时可能会导致程序出错或崩溃。

类型scanf函数printf函数
float%f%f、%lf
double%lf%lf

②格式字符的标志(在英文格式字符前加字符表示不同的意思)

标志含义实例
n.mn表示整数占几行,m表示小数占几行%2.3f
-输出的结果左对齐%-d
空格输出值为正时冠以空格,为负时冠以负号
#

输出带有前导的数据(八进制为0~~~,

十六进制为X~~~,~表示数字)

%#d

Ⅲ、转义字符
转义字符释义
?在书写连续多个问好时使用,防止他们被解析成三字字词
'用于表示字符常量
"用于表示一个自负床内部的双引号
\用于表示一个反斜杠,防止它被解释为一个转义序列符
a警告字符,蜂鸣
b退格符
f换页符
n换行符
r回车
t水平制表符(8个空格)
v垂直制表符
dddddd表示1-3个八进制的数字。如:120
xdd

dd表示2个十六进制数字,如:x30

知识点:

在Windows系统中我们输入回车时,输入的字符是rn,unix系统中回车为n,而mac系统中回车的字符为r. 


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号