C语言中 printf函数格式化输出

一.  简介

本文来简单学习一下,C语言中printf函数格式化输出时,因为我们的粗心没有 将数据类型与格式化参数对应,而导致的一些问题。

二.  C语言中printf函数的格式化输出

在C语言中,printf函数是用于格式化输出的函数,它不会进行隐式类型转换。

隐式类型转换通常是编译器在需要时自动进行的,而不需要程序员手动指定。另外,开发者也可以对数据进行强制类型转化。

如果你尝试使用printf输出不同类型的数据,但提供的格式化字符串与实际传入的参数类型不匹配,你的程序可能会遇到未定义行为。这是因为printf 函数依赖于你提供的格式化字符串,从来确定如何解释传入的参数内存。

例如,如果你尝试使用 %d 格式化字符串来输出一个浮点数,printf 函数将不会进行隐式类型转换,而是会读取浮点数内存中的一部分作为整数,这将导致不正确的输出或程序崩溃。

为了避免这种情况,你应该确保传递给 printf函数的参数类型,与你在格式化字符串中指定的类型相匹配,如果需要,可以手动进行显式类型转换。

例如如下代码,当以浮点格式 "%f"打印一个整型数据时,就会出错:

#include <stdio.h>

int main(void) 
{
    int a = 2;
    printf("%f\n", a);
 
    return 0;
}

输出结果如下:

可以看出,这里输出出错了。

总结:

C语言中,printf 函数不会进行任何类型转换,只是按照你给的格式从内存读取值。
在计算机中,printf 函数去访问读取内存数据时,访问读取浮点数和访问读取整数的寄存器是不一样的。

printf不安全,类型不安全,要是类型不对了,也许程序就崩溃了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/670193.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何实现一个AI聊天功能

最近公司的网站上需要对接一个AI聊天功能&#xff0c;领导把这个任务分给了我&#xff0c;从最初的调研&#xff0c;学习&#xff0c;中间也踩过一些坑&#xff0c;碰到过问题&#xff0c;但最后对接成功&#xff0c;还是挺有成就感的&#xff0c;今天把这个历程和项目整理一下…

揭秘:为啥赚钱越来越难了?8大残酷真相!

当下&#xff0c;许多人都普遍感受到了一种前所未有的压力&#xff1a;赚钱似乎变得越来越难了。这一现象的背后&#xff0c;隐藏着多个层面的复杂原因。以下&#xff0c;我们将结合最新的数据和观察&#xff0c;从几个关键角度探讨这一现象的成因。 首先&#xff0c;全球经济…

flinksql 回撤流中主键发生变更的影响(group by中的值发生改变)

flinksql 回撤流中,主键发生变更的影响 1 什么是回撤流2 主键变更场景3 实践中发现的比较好的的实时数仓架构1 什么是回撤流 这篇文章主要谈论一个场景,简单来说: 首先我们来简单的说一下什么是回撤流,以及回撤流的底层原理,举个例子: 这个说的不是很清晰 ,其实倒数第…

Java学习19-List、set容器

目录 一.List&#xff1a; 1.List基本介绍&#xff1a; 2.List接口方法&#xff1a; 3.List的三种遍历方式&#xff1a; 4.ArrayList&#xff1a; &#xff08;1&#xff09;ArrayLis的基本介绍&#xff1a; &#xff08;2&#xff09;ArrayList底层结构和源码分析&…

就业班 第四阶段(docker) 2401--5.29 day3 Dockerfile+前后段项目若依ruoyi

通过Dockerfile创建镜像 Docker 提供了一种更便捷的方式&#xff0c;叫作 Dockerfile docker build命令用于根据给定的Dockerfile构建Docker镜像。docker build语法&#xff1a; # docker build [OPTIONS] <PATH | URL | ->1. 常用选项说明 --build-arg&#xff0c;设…

数学建模 —— 数学规划模型(5)

目录 一、数学规划 1.1 数学规划问题一般形式 二、常见规划模型 2.1 线性规划&#xff08;Linear Programming&#xff09; 2.1.1 定义 2.1.2 一般形式 2.1.3 标准形式 2.1.4 求解 2.2 整数规划&#xff08;Integer Programming&#xff09; 2.2.1 单目标规划 2.…

跨域请求解决方法----不允许有多个 ‘Access-Control-Allow-Origin‘ CORS 头

后端配置了代码&#xff1a; spring:application:name: spzx-server-gatewaycloud:nacos:discovery:server-addr: localhost:8848gateway:discovery:locator:enabled: trueglobalcors:cors-configurations:[/**]:allowedOriginPatterns: "*"# 允许请求中携带的头信息…

每日刷题——杭电2156.分数矩阵和杭电2024.C语言合法标识符

杭电2156.分数矩阵 原题链接&#xff1a;Problem - 2156 题目描述 Problem Description&#xff1a;我们定义如下矩阵: 1/1 1/2 1/3 1/2 1/1 1/2 1/3 1/2 1/1 矩阵对角线上的元素始终是1/1&#xff0c;对角线两边分数的分母逐个递增。请求出这个矩阵的总和。 Input&#xf…

zibll-V7.7最新版2024完美破解授权可用(含授权教程)

最近这个正版安装包流出来了,试了一下用以前的绕过授权方法&#xff0c;一样可以授权。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89379057 更多资源下载&#xff1a;关注我。

基于标准库的STM32的外部中断EXTI

毕设已经告一段落了&#xff0c;接下来准备开始整理一下毕设中用到的知识与技术细节&#xff0c;今天整理的是STM32从编码器获取数据的方式-----外部中断&#xff08;EXTI&#xff09;&#xff1a; 外部中断分为四个硬件相关外设&#xff0c;GPIO/AFIO/EXTI/NVIC&#xff08;E…

天润融通:大模型与生成式AI的融合,开辟零售增长新路径

大模型时代&#xff0c;零售消费企业如何用数智化出奇制胜。 近期&#xff0c;由国内领先的科技产业资本研究平台第一新声举办的“2024年中国CIO数字策略大会”在上海隆重举行。 天润融通消费零售行业顾问颜欣欣先生受邀参与此次大会&#xff0c;并发表了《大模型实践分享:基…

RabbitMQ一、RabbitMQ的介绍与安装(docker)

一、RabbitMQ相关名词解释 MQ MQ全称Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。 多用于系统之间的异步通信。 常见的两种通信方式&#xff1a; 同步通信&#xff1a;同步通信相当于两个人当面对话&#xff0c;你一言我…

神经网络算法详解与前沿探索

神经网络算法详解与前沿探索 随着人工智能技术的迅猛发展&#xff0c;神经网络成为机器学习领域的重要组成部分&#xff0c;广泛应用于图像识别、自然语言处理和推荐系统等。本文将详细探讨神经网络的基本原理、结构、训练过程及其应用实例&#xff0c;并扩展至更多相关领域和…

虚拟机ubuntu中docker容器端口无法转发可能的一个问题

今天发现一个奇怪的问题。 在vmware里面的Ubuntu虚拟机&#xff0c;不知道为啥docker转发一直不成功。 看了半天&#xff0c;无论是docker ps的进程状态&#xff0c;netstat的端口状态&#xff0c;和iptables的转发链接都是没问题了。 然后我就ifconfig看了一下虚拟机的Ip&…

第四范式Q1业务进展:驰而不息 用科技锻造不朽价值

5月28日&#xff0c;第四范式发布今年前三个月的核心业务进展&#xff0c;公司坚持科技创新&#xff0c;业务稳步拓展&#xff0c;用人工智能为千行万业贡献价值。 今年前三个月&#xff0c;公司总收入人民币8.3亿元&#xff0c;同比增长28.5%&#xff0c;毛利润人民币3.4亿元&…

Python | Leetcode Python题解之第126题单词接龙II

题目&#xff1a; 题解&#xff1a; class Solution:def findLadders(self, beginWord: str, endWord: str, wordList: List[str]) -> List[List[str]]:ans []if endWord not in wordList:return anssize len(beginWord)cur_word_set {beginWord}ws set(wordList)# 用于…

Apache Superset:数据可视化的现代开源解决方案

Superset&#xff1a; 洞察数据&#xff0c;一目了然- 精选真开源&#xff0c;释放新价值。 概览 Apache Superset 是一个由 Apache 软件基金会支持的开源数据可视化和数据探索平台。它允许用户以直观的方式构建丰富的数据报告和仪表板&#xff0c;支持从多种数据源中提取数据…

Houdini的PythonScript基本使用

前言 Houdini内置了Python脚本和相应的编辑器, 很多时候想灵活的制作各种Houdini工具, 基本是必须用到 Python。Houdini官方的python提供了非常完善的接口, 比如可以创建各种节点&#xff0c;连接各种节点&#xff0c;遍历节点各种数据&#xff0c;遍历节点参数等等。 Houdin…

Ubuntu server 24 (linux) 安装 ClamAV 防病毒软件 配置和使用教程

一 ClamAV是一个开源的防病毒引擎&#xff0c;用于检测木马&#xff0c;病毒&#xff0c;恶意软件和其他 恶意威胁。 官网地址 二 安装 1 开始安装 sudo apt update sudo apt install clamav clamav-daemon #查看版本 snort$ clamscan -V ClamAV 1.0.5/27292/Fri May 31 …

11.3 冒泡排序

目录 11.3 冒泡排序 11.3.1 算法流程 11.3.2 效率优化 11.3.3 算法特性 11.3 冒泡排序 冒泡排序&#xff08;bubble sort&#xff09;通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到顶部一样&#xff0c;因此得名冒泡排序。 如图 11-4 所示…