%md在printf语句和scanf语句中的区别

简介: %md在printf语句和scanf语句中的区别

1. %md在printf语句

       输出的宽为m位(当我们所给的m值<原本输出的实际宽度,按照原来的宽度输出),也就是说printf语句最少输出宽度也是它原本的宽度,宽度只能大,不能小。

#include <stdio.h>
int main()
{
    int a = 1234;
    printf("1d在打印中表示 %1d\n",a);
    printf("2d在打印中表示 %2d\n",a);
    printf("3d在打印中表示 %3d\n",a);
    printf("4d在打印中表示 %4d\n",a);
    printf("5d在打印中表示 %5d\n",a);
    printf("6d在打印中表示 %6d\n",a);
    return 0;
}


287b3c93b4cd4983b51fff2b2c05a3b0.png

 我们看图中进一步理解,我们给a赋值为1234,那么a的宽度为4,所以在printf输出的时候至少要输出4位。如图,我们令m=1,2,3时候,因为a最开始的宽度就是4,所以只要小于原本宽度的m值,一律默认为原本宽度4。当m=5时,我们要求输出的宽度为5,但是a只有四位1234,这时候就要用空格在前面补一位,保证宽度。


       其实我们不难发现,printf输出的宽度必须是在它原本宽度上增加或者不变。

当我们想用0来填补空格时候就可以在%和md中间加0,%0md,如图:

#include <stdio.h>
int main()
{
    int a = 1234;
    printf("%06d\n",a);
    return 0;
}


f24a934545b946129b763e113859312c.png


在%和6d中间加了个0时候,前面自动补齐0;

2. %md在scanf语句

       %md表示读入的数为m位,超过m位,只读m位,不足m位则按实际位数读入。

#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%1d",&a);
    printf("%d\n",a);
    return 0;
}


0255efbc1af54fbd9d04c7e61704e281.png

如图,我们输入了1234四位,但是我们只想读1位,所以我们令m=1,读1234的1位,也就是1。我们都是从左往右读,以此类推,m=2就是12,m=3就是123。

但是当我们读5位会是什么样的结果呢?我们看下图

#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%5d",&a);
    printf("%d\n",a);
    return 0;
}

c3f725636c9b437c85b1174f0f764d98.png


我们可以发现,当m=5的时候,输出为1234,所以可以得出结论,当m大于我们实际输入的位数,按实际位数读入并输出。 (也就是说,我们的m就是我们想读到的实际输入位数的多少位,位数从左往右数,最左边是第一位,以此类推。)

相关文章
|
12月前
|
存储 C语言
C语言32位或64位平台下指针的大小
在32位平台上,C语言中指针的大小通常为4字节;而在64位平台上,指针的大小通常为8字节。这反映了不同平台对内存地址空间的不同处理方式。
|
11月前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
352 1
|
存储 Kubernetes Docker
docker-compose转化为pod配置文件
docker-compose转化为pod配置文件
|
jenkins Java 测试技术
CI/CD 流水线的设计与实施
【8月更文第30天】持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)是现代软件开发中的重要组成部分。CI/CD 不仅可以加速产品的发布周期,还能提高软件的质量并减少部署过程中的风险。本文将详细介绍 CI/CD 流水线的设计与实施,并提供一些实用的工具和最佳实践。
1288 2
|
Ubuntu 网络安全
【ubuntu 网卡混杂模式设置】
【ubuntu 网卡混杂模式设置】
449 1
|
机器学习/深度学习 人工智能 运维
智能运维:未来之路的探索与实践
在数字化浪潮中,智能运维如同航船之舵,引领企业乘风破浪。本文将深入探讨智能运维的发展趋势,从自动化到智能化的转变,以及人工智能、大数据等技术如何赋能传统运维,提升效率与价值。我们将一同见证智能运维如何重塑IT服务管理的未来。
|
存储 并行计算 数据处理
蓝易云 - 香港站群服务器1C,4C,8C,16C的配置介绍
以上是对服务器CPU核心数量的基本解释,但实际的服务器配置还会包括其他因素,如内存大小、存储类型和网络带宽等。这些因素都会影响服务器的性能和适用场景。
915 2
基于广义Benders分解法的综合能源系统优化规划(matlab程序)
基于广义Benders分解法的综合能源系统优化规划(matlab程序)
|
Java API 开发工具
OpenCV On Android开发 - Android Studio上环境配置
OpenCV On Android开发 - Android Studio上环境配置
168 0
用 Python 绘制美丽的散点图
散点图是一种用于展示两个变量之间关系的图表,它将数据以点的形式绘制在平面上,每个点代表一个数据点。通过观察散点的分布和趋势,可以推断出两个变量之间的相关性。在 Python 中,我们可以使用`matplotlib`库来绘制散点图。
用 Python 绘制美丽的散点图