English 中文(简体)
印刷法具体规定了浮体的分类格式
原标题:printf specify integer format string for float
  • 时间:2009-10-27 16:33:29
  •  标签:
#include <stdio.h>

int main()
{
    float a = 5;
    printf("%d", a);
    return 0;
}

产出:

0

为什么产出为零?

问题回答

由于汇编者不知会自动投向愤怒者,因此没有打印第5版。 页: 1

这就是说,

#include<stdio.h>
void main()
{
float a=5;
printf("%d",(int)a);
}

正确的产出 5.

比较该方案

#include<stdio.h>
void print_int(int x)
{
printf("%d
", x);
}
void main()
{
float a=5;
print_int(a);
}

如果编辑商直接知道将浮标投到暗中,则由于宣布了<代码>印号_int。

格式查询器只能使用<代码>int的数值。 您通过<条码>杜布尔(<条码>float将暗中转换成)。 由此产生的行为没有界定。 没有回答“什么是零?”的问题。 页: 1 事实上,任何事情都会发生。

P.S.

  1. That s int main, not void main.
  2. There s no such header as conio.h in standard C.

你们要么把浮标投到硬墙上,要么使用一种显示浮体且无精细的公式:

int main() {
  float a=5;
  printf("%d",(int)a); // This casts to int, which will make this work
  printf("%.0f",a); // This displays with no decimal precision
}

您需要使用<代码>%f而不是%d-%d。 浮动点:

#include<stdio.h>
#include<conio.h>
void main()
{
  float a=5;
  printf("%f",a);
}

You have to use a different formatting string, just have a look at http://www.cplusplus.com/reference/clibrary/cstdio/printf/

a) 印刷;

你们希望用 %f印刷浮动值。

页: 1

float a=5;
printf("%f",a);

正如其他人所说的那样,你需要使用<条码>%f,其格式为:<条码>a>。

但我要指出,您的汇编者,或许知道f () 格式,并可以告诉你如何使用。 我的汇编者,加上适当的援引(-Wall,包括-Wformat):

$ /usr/bin/gcc -Wformat tmp.c
tmp.c: In function ‘main’:
tmp.c:4: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘double’

$ /usr/bin/gcc -Wall tmp.c
tmp.c: In function ‘main’:
tmp.c:4: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘double’

$

Oh, and one more thing: you should include in the printf() to ensure the output is sent to the output device.

printf("%d
", a);
/*        ^^ */

fflush(stdout); after the





相关问题
热门标签