首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >printf("%f",x) ok,printf("%F",x)错误的参数太多

printf("%f",x) ok,printf("%F",x)错误的参数太多
EN

Stack Overflow用户
提问于 2020-06-07 01:20:18
回答 3查看 597关注 0票数 6

当我在CodeBlocks中使用说明符F时,编译器为什么给我错误“太多的格式参数”?

代码语言:javascript
运行
AI代码解释
复制
#include <stdio.h>

int main()
{
    float x = 3.14159;
    printf("%f\n", x);
    printf("%F\n", x);
    return 0;
}

错误:

代码语言:javascript
运行
AI代码解释
复制
error: unknown conversion type character 'F' in format [-Werror=format=]

error: too many arguments for format [-Werror=format-extra-args]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-07 01:58:15

看起来有些版本的GCC不认识%F,奇怪的是。我的gcc version 9.2.0 (tdm64-1) for windows具有C11标准,虽然它只将那些作为警告消息发出而不是错误,但它不识别它。

代码语言:javascript
运行
AI代码解释
复制
$ gcc main2.c -Wextra -Wall -pedantic -std=c11
main2.c: In function 'main':
main2.c:7:14: warning: unknown conversion type character 'F' in format [-Wformat=]
    7 |     printf("%F\n", x);
      |              ^
main2.c:7:12: warning: too many arguments for format [-Wformat-extra-args]
    7 |     printf("%F\n", x);
      |            ^~~~~~

执行时不打印值。

我猜您可能在Windows中使用了一些mingW安装,而您的编译器必须将警告作为错误来处理,这并不是一个坏主意。

作为@HolyBlackCat建议,添加-D__USE_MINGW_ANSI_STDIO标志解决了这个问题。

这个帖子有关于如何做到这一点的说明。

@RobertS支持莫妮卡·塞利奥的回答有一个关于如何将其添加到CodeBlocks的说明的链接。

或者,对于代码的快速修复,可以使用%G%E作为科学表示法。

票数 4
EN

Stack Overflow用户

发布于 2020-06-07 01:54:27

F格式说明符最初是在C99中引入的。您的编译器似乎符合C89/C90,或者启用了std=c90/std=c89编译器选项。

如果配置的编译器是gcc,则可以使用gcc --version命令检测版本。

否则,应检查编译器所使用的标准的set编译器选项。看看这里:

如何在代码块上添加编译器标志

虽然对于Ubuntu (我不知道您使用的是什么操作系统CodeBlocks),但的回答为您提供了CodeBlocks编译器选项设置的直观概述。

票数 2
EN

Stack Overflow用户

发布于 2020-06-08 12:06:41

编译器给出了错误“printf的太多参数”,因为它不承认%F是格式说明符.因此,添加到printf()中的参数是额外的,不应该存在。

下面C89中的标准格式说明符,指定浮点格式为eEfgG (不包括F,原因在本答案的最后编辑中说明)

请记住,编译器根本不应该读取printf()的格式字符串来将参数与格式说明符匹配,所以在那里发生的事情只应该处理printf(3)规范,这确实是printf(3)的一个问题,而不是编译器。可能,如果您尝试生成的程序,它应该可以工作。

编辑

我试过clang (对不起,但我这里没有gcc ),我也发现了一些可能的原因(也不是一个错误)。这里的printf(3)实现根本不使用科学符号(这是我没有用标准检查过的),因此它永远不会生成字母字符,也不会涉及小写或大写字母。所以对于程序来说

代码语言:javascript
运行
AI代码解释
复制
#include <stdio.h>

int main()
{
        printf("%5.3G\n", 3.141592654E160);
}

它打印:

代码语言:javascript
运行
AI代码解释
复制
$ ./a.out
3.14E+160
$ _

而为

代码语言:javascript
运行
AI代码解释
复制
#include <stdio.h>

int main()
{
        printf("%5.3F\n", 3.141592654E160);
}

印出来

代码语言:javascript
运行
AI代码解释
复制
$ a.out
31415926539999999255132844331312943389972993386142531366742209094398699375217155068328829400434148008839629239544769533043070670437328460352417427610347451187200.000
$ _

由于只发出数字和小数点,在格式说明符的大小写上没有大写或小写解释,因此这两种形式都是等效的(但其中一种是非标准的)。

解决方案只是切换到小写f

正如@chux-ReinstateMonica莫妮卡在评论之一C89第133页(pdf的143页)中所建议的,标准不包括F格式说明符,只有eEfgG。考虑到f从未改变为指数表示法,这应该是正常的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62243319

复制
相关文章
Mesos+Marathon对比Kubernetes
本文是我之前在技术选型时给团队做的一次分享内容,做了一次相对全面的关于Kubernetes 1.2 和 Mesos 0.28 + Marathon 1.2的对比, 其中有部分内容是它们特有的一些特性介
Walton
2018/04/13
1.2K0
Mesos+Marathon对比Kubernetes
marathon和mesos的zookeeper数据加密和验证
###zookeeper设置用户验证访问权限 ####首先你要弄明白zookeeper的验证 先给一个例子
domain0
2018/08/02
1K0
Mesos+Marathon+Docker构建docker集群化管理
由Docker引领的容器技术最近一年在生产环境叫嚣的比较厉害,由于Docker本身拥有的一些特性,使得越来越多的人愿意并且想尝试在生产环境构建Docker,有关docker相关的介绍可以看我去年发布的文章(http://my.oschina.net/xxbAndy/blog/493184 )。然而随着业务的规模不断扩大,对docker的管理和维护也对运维人员有一些挑战,使用一些开源的框架和服务满足互联网公司的基本需求是一种常见而高效的方式,本篇文章就简单介绍一下使用Mesos+Marathon来对docke
BGBiao
2018/02/26
1.8K0
Mesos+Marathon+Docker构建docker集群化管理
Mesos+Zookeeper+Marathon管理Docker(1)
.服务器信息:物理机10.1.44.35上的KVM虚拟机 名称IP服务单点10.1.44.69Mesos\Marathon\Deimos\Zookeeper\DockerMesos Master Node110.1.44.32Mesos\Marathon\Deimos\ZookeeperMesos Master Node210.1.44.50Mesos\Marathon\Deimos\ZookeeperMesos Master Node310.1.44.55Mesos\Marathon\Deimos\
早起的鸟儿有虫吃
2018/04/12
7290
如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台
(2)添加apache-maven源 为Mesos提供项目管理和构建自动化工具的支持
星哥玩云
2022/07/25
6320
如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台
mesos+marathon的端口占用问题 原
另外在mesos的agent上有一个resources的字段,里面也可以设置端口的范围 原则上应用首先按照marathon的配置进行端口随机划分,但是到了agent会根据具体的host上的情况,再次按照resources的设置分派并上报给marathon和mesos master (上面的结论是我猜的)
domain0
2018/08/01
4540
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
随着"互联网+"时代的业务增长、变化速度及大规模计算的需求,廉价的、高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统。Docker及其相关技术的出现和发展,又给大规模集群管理带来了新的想象空间。如何将二者进行有效地结合?下面将记录使用Mesos+Zookeeper+Marathon+Docker分布式部署Paas云平台环境,其中: 1)Mesos:Mesos采用与Linux kernerl相同的机制,只是运行在不同的抽象层次上。Mesos kernel利用资源
洗尽了浮华
2018/01/22
2.7K0
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
Kubernetes vs. Mesos:选择容器编排工具
容器编排在今天风靡一时并不是什么大秘密。作为许多文章和会议的主题,它有时似乎是唯一值得讨论的话题。
February
2018/11/27
1.5K0
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)--负载均衡marathon-lb
之前介绍了Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)的操作,多余的废话不说了,下面接着说下在该集群环境下的负载均衡marathon-lb的部署过程: 默认情况下,mesos marathon会把app发布到随机节点的随机端口上,当mesos slaves和app越来越多的时候,想查找某组app就变得困难。 mesos提供了两个工具:mesos-dns和marathon-lb,他们俩是mesosphere 官网提供的两种服务发现和负载均衡工具,其中: mesos-dn
洗尽了浮华
2018/01/22
1.5K0
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)--负载均衡marathon-lb
Mesosphere要让数据中心管理像使用个人计算机
数据中心操作系统厂商Mesosphere希望可以让企业在数据中心运作分布式系统时,能够像运作一台个人计算机一样简单。在近日,Mesosphere也将DC/OS(DataCenter Operating System,数据中心操作系统)以开源形式释出。Mesosphere表示,想要变成软件定义的企业,可以使用DC/OS作为基础。DC/OS除了以Mesosphere为首外,同时还集结了超过60个企业伙伴。除了微软、思科、HPE等科技大厂外,Puppet、Chef及Datadog等DevOps厂商也没有缺席。 M
Rainbond开源
2018/05/31
4060
Mesos已死,容器永生
作者 | Tina “回顾过去,我认为 Mesos 的失败是种必然。” 4 月 7 日,Apache 宣布开始投票进程,准备将曾火极一时的 Mesos 项目移至 Attic 下。 Mesos 诞生于 2009 年,最初是伯克利大学的一个研究项目。它曾为分布式资源管理做出过一系列前沿贡献,据 Mesosphere/D2IQ 联合创始人回忆,“我们提出的 Mesos 是一套可跨越多个不同集群计算框架(类似于 Hadoop 与 MPI)实现商用集群共享的平台。”它的诞生甚至比 YARN 还早了几年,并于 201
深度学习与Python
2023/04/01
4570
Mesos已死,容器永生
DCOS之Marathon初识篇
Marathon是一个mesos框架,能够支持运行长服务,比如web应用等。是集群的分布式Init.d,能够原样运行任何Linux二进制发布版本,如 Tomcat Play等等,可以集群的多进程管理,实现服务的发现,为部署提供提供REST API服务,SSL与基础认证、配置约束,通过HAProxy、DNS实现服务发现和负载平衡,可定制化监控策略实现Task(一个App对应多个Task)的自动扩缩,Dcos架构与操作系统架构对比如图1.1所示。
zouyee
2021/02/01
5190
DCOS之Marathon初识篇
『高级篇』docker之服务编排了解Mesos(22)
Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。Mesos最初是由加州大学伯克利分校的AMPLab开发的,后在Twitter得到广泛使用。 初见 http://mesos.apache.org/ 在你的数据中心 运行数据(很多台数据的集合),就像运行在单个的资源池一样 Mesos 抽象出来CPU,内存,磁盘和其他计算机资源从物理机或者虚拟机中,使具有容错的和可伸缩的系统更容易的构建和简单的运行。如果是没有基础的老铁,可能是认为是直接把服务器的硬件插拔出来重新组建一台新的机器,
IT架构圈
2018/11/30
5690
『高级篇』docker之服务编排了解Mesos(22)
为什么你的私有云可以很像PaaS?
在IT界数年针对私有云架构的优点的不断的争论之后,一个切实可行且企业可用(enterprise-ready)的私有云架构终于来到了我们面前。并且与其它在过去的一个世纪出现的技术方案不同,它已经在世界上的一些巨头公司,和采用先进技术的最多的公司里都证明了自己的价值。 重要的是,我们指的不是IaaS。到目前为止IaaS方案已经被尝试过太多次,难以统计,并且还没有怎样扩散开来。不断的有初创公司尝试然但无功而返,也不乏大公司步其后尘 - 包括像OpenStack这样的项目 - 结果却未能将私有的IaaS打造成为一个
静一
2018/03/22
2.6K0
为什么你的私有云可以很像PaaS?
通过Shodan发现目标应用Marathon服务的RCE漏洞
大家好,今天要和大家分享的是,作者在Shodan搜索中发现某应用系统Marathon服务的无需密码验证bug,进一步提权形成RCE漏洞。作为一名开发工程师,作者通过发现该漏洞得到的经验是:在做漏洞众测时,具备一定的开发背景经验非常重要,if you know how something works, you might be able to break it,只有了解目标应用的工作机制,才能有效地发现它存在的问题。最终作者凭借该漏洞获得厂商上万美金的奖励。
FB客服
2019/10/10
9880
通过Shodan发现目标应用Marathon服务的RCE漏洞
大家之前是不是误解了DC/OS与Kubernetes之间的关系
DC/OS 与 Kubernetes 本篇文章将主要介绍“Kubernetes on DC/OS”的实现机制与优势,不会就Mesos与Kubernetes的架构与技术细节做过多的展开。关于Mesos与DC/OS的具体功能细节,大家可以关注本公众号,本公众号后续会陆续推送不同类型的技术文章,这些文章将包括Mesos以及DC/OS的架构介绍、技术原理与实现方式,以及微服务、分布式应用、大数据平台、AI平台在DC/OS平台之上运行的最佳实践。 随着容器技术快速地发展与不断的成熟,与容器相关的生态体系也在不断地丰富
企鹅号小编
2018/01/19
1.2K0
大家之前是不是误解了DC/OS与Kubernetes之间的关系
微服务架构开发实战:如何实现微服务的自动扩展?
前面讲了一些关于自动扩展的理论知识,但如何实现自动扩展,并不是三言两语就能够说得清楚的。特别是为了实现前面提到的那些自动扩展的模式及策略,在操作系统级别方面会需要大量的执行脚本。在自动扩展方面,SpringCloud框架也并没有给出确切的答案。
愿天堂没有BUG
2022/10/28
8160
微服务架构开发实战:如何实现微服务的自动扩展?
「容器云平台」Mesos 和 Kubernetes的比较
我们将评估这种系统的期望特性。在此基础上,我们将尝试比较目前使用的两个最流行的容器编排系统Apache Mesos和Kubernetes。
架构师研究会
2020/11/24
3.7K0
「容器云平台」Mesos 和 Kubernetes的比较
『高级篇』docker之Mesos调整微服务(25)
上次已经搭建了mesos的集群环境,这次看看如何把mesos运行在集群之上,首选需要考虑的问题服务的发现,之前用docker-compose是如何在同一台机器上做的,是不是通过link的名称,link的前提就是需要在同一台主机上,我们当时是在同一台虚拟机上,通过link服务让他们都运行起来,通过名字就可以互相的访问,我们在代码的配置上,也是通过名字让他们彼此之间可以相互的访问,但是现在的情况,我们有2台slave,1台master,我们运行其中任何一个配置的时候都有可能分配到slave中的一个,所以用doc
IT架构圈
2018/12/05
5840
点击加载更多

相似问题

使用cobertura的声纳插件配置

22

定制maven校验式插件

22

cobertura插件与FindBugs的冲突

33

在声纳校验式插件中使用@SuppressWarnings

22

Maven FindBugs插件

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文