【C语言篇】详细解释:转换字符%d和–d前面加不同数字时的意义和作用

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 【C语言篇】详细解释:转换字符%d和–d前面加不同数字时的意义和作用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

🙇‍♀️写在前面的话:
这个文章主要讲解%d的用法,会由两个题目引入,进而分析和总结%d的d前面加不同数字(整数、小数)情况下的用法和作用。


🌎引入–2个题目:

题目1:

在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS 1

int main()
{
	int x = 0;
	float y = 0;

	scanf("%3d%f", &x, &y);
	printf("%d %f\n", x, y);


	return 0;
}

这个题目的结果是C:123
在这里插入图片描述

题目2:

在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main()
{
	int a = 1234;
	printf("%2d\n", a);

	return 0;
}

这个题目的答案是A:1234
在这里插入图片描述

对比:

当时,我和 一位同学对这两个题目的疑问是:第二个题目不应该输出结果是“12”吗。因为根据我们之前对%d浅显的理解是:d前面加整数,限制了输出字符数量,换句话来说,限制了在屏幕上输出的宽度。
其实,要弄清楚这个问题,要明白以下几点:
🅰:d前面的整数和实际字符数的大小关系。

🅱:经过格式化修饰的%d是在scanf函数内还是在printf函数


·第一个题目中,%d前面的数字3是小于实际字符数的,而且%3d是存在与输入函数scanf函数内的。
那么%d前面的整数,限制了编译器读取整数的字符数量(只从左向右读取三个整数字符)。
所以,x的值是123(为12345的前三个字符)
🆚
·第二个题目中,%d前面的数字2也是小于实际字符数的,而且%2d是存在于输出函数printf函数内的。
那么%d前面的整数,限制了输出在屏幕上的字符数量(宽度)
但是注意:❗❗❗
2是小于4的,按理来说应该应该输出2对吧?其实不然。
printf函数内%d格式化修饰时,并不是所有时候都能发挥作用,只有当d前面的数字是大于实际字符数时,才“发挥作用“(右对齐,左边补空格,这个下面会详细演示和讲解)。
在printf函数内:当d前面的整数小于实际字符数时,d前面的数字表示至少输出这么多个字符(并不是至多)。
所以,输出的结果是1234,而不是12.

💦分析d前加数字不同情况时的意义

这里用代码演示一下
🅰:printf函数内存在%md时
m<实际字符数时:是至少输出m个,不是表示只能输入m个!!!(这个时候m其实不发挥作用)
在这里插入图片描述
m>实际字符数时:
在这里插入图片描述
🅱:scanf函数内存在%md时:
m<实际字符数时:这个表示的才是至多(编译器至多读取m个字符)。
在这里插入图片描述
m>实际字符数时:因为表示的是至多,所以这个其实也不会发挥作用。
在这里插入图片描述

🌇总结:

1,⭐%d前面加整数(%md)

·scanf(输入)内:

1,m>实际字符数
m不发挥作用,无影响
2,m<实际字符数(至多读取m个
m发挥作用,编译器从左向右读取m个数字字符

·printf(输出)内:

1,m>实际字符数
m发挥作用,在屏幕上输出字符的宽度为m个字符,并且右对齐(如果m为负整数,那么左对齐,右边填充空格),不够的话左边补空格。
2,m<实际字符数(至少输出m个
m不发挥作用(有没有m都一样)。

2,补充:⭐%d前面加小数

假设:(%m.nd)
printf内:
右对齐,占m个字符空间(空格填充),n个有效数字(不足填0)
eg:
在这里插入图片描述


写在后面的话:
这篇是通过学习、请教他人,再加上经过自己的一些反思和理解,整理而写成的。其中可能有一些不准确的地方或者理解不深入的地方,还请大家多多指正!希望能对大家遇到相似问题时有所帮助!😉

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/142482.html

(0)

相关推荐

  • Redis学习(一)简单动态字符串(SDS)

    导读:本篇文章讲解 Redis学习(一)简单动态字符串(SDS),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    2023年1月17日
    00
  • 第一次创建Maven项目报错Could not transfer artifact org.apache.maven.pluginsmaven-clean-pluginpom

    导读:本篇文章讲解 第一次创建Maven项目报错Could not transfer artifact org.apache.maven.pluginsmaven-clean-pluginpom,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    2023年2月14日
    00
  • Node.js–》如何在Node.js中操作MySQL

    生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

    导读:本篇文章讲解 Node.js–》如何在Node.js中操作MySQL,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    技术随笔 2023年4月25日
    00
  • MyBatis基础 — 参数传递、参数映射、注解开发、字符串替换、面试考察

    导读:本篇文章讲解 MyBatis基础 — 参数传递、参数映射、注解开发、字符串替换、面试考察,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    也许你感觉自己的努力总是徒劳无功,但不必怀疑,你每天都离顶点更进一步。今天的你离顶点还遥遥无期。但你通过今天的努力,积蓄了明天勇攀高峰的力量。加油!

    技术随笔 2023年3月3日
    00
  • 大型网站技术架构:大型网站架构演化

    导读:本篇文章讲解 大型网站技术架构:大型网站架构演化,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年2月11日
    00
  • Java集合必会14问(精选面试题整理)

    导读:本篇文章讲解 Java集合必会14问(精选面试题整理),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年1月11日
    00
  • C语言小项目——井字棋游戏(升级版)

    导读:本篇文章讲解 C语言小项目——井字棋游戏(升级版),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年1月20日
    00
  • 【云原生|DevOps】DevOps工具精讲

    导读:本篇文章讲解 【云原生|DevOps】DevOps工具精讲,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年2月13日
    00
  • 9. 说说hashCode() 和 equals() 之间的关系?

    勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

    导读:本篇文章讲解 9. 说说hashCode() 和 equals() 之间的关系?,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    技术随笔 2023年5月5日
    00
  • opencv绘制图形和文字,一篇文章学会绘制图形操作

    导读:本篇文章讲解 opencv绘制图形和文字,一篇文章学会绘制图形操作,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    2023年1月13日
    00

发表回复

登录后才能评论