double,longdouble除了范围的区别
同样的程序,为什么double执行正确,而longdouble执行错误。求大佬解释{:10_254:} long double 和 double 的输出格式是不一样的在我这边是 Lf 和 lf
#include<stdio.h>
int main()
{
int r;
double c,s;
r=5;
c=2*3.14*r;
s=3.14*r*r;
printf("c=%6.2lf,s=%6.2lf",c,s);
return 0;
}
#include<stdio.h>
int main()
{
int r;
long double c,s;
r=5;
c=2*3.14*r;
s=3.14*r*r;
printf("c=%6.2Lf,s=%6.2Lf",c,s);
return 0;
}
发代码 人造人 发表于 2021-8-27 11:37
发代码
#include<stdio.h>
int main()
{
int r;
long double c,s;
r=5;
c=2*3.14*r;
s=3.14*r*r;
printf("c=%6.2Lf,s=%6.2Lf",c,s);
return 0;
} 人造人 发表于 2021-8-27 11:37
发代码
这个是longdouble的那个 文件开头加个这个试试
#define _USE_MINGW_ANSI_STDIO 1 人造人 发表于 2021-8-27 12:00
感谢感谢{:10_254:} 逃兵 发表于 2021-8-27 11:49
文件开头加个这个试试
谢谢,兵哥 人造人 发表于 2021-8-27 11:37
发代码
但是大佬你运行下你发的下面那个代码,我试了下结果依据是0, wyz20010429 发表于 2021-8-27 12:18
但是大佬你运行下你发的下面那个代码,我试了下结果依据是0,
在我这边 long double 没问题,但是 double 什么都不显示
$ cat main.c
#include<stdio.h>
int main()
{
int r;
long double c,s;
r=5;
c=2*3.14*r;
s=3.14*r*r;
printf("c=%6.2Lf,s=%6.2Lf",c,s);
return 0;
}
$ gcc -g -Wall -o main main.c
$ ./main
c= 31.40,s= 78.50$ vim main.c
$ cat main.c
#include<stdio.h>
int main()
{
int r;
double c,s;
r=5;
c=2*3.14*r;
s=3.14*r*r;
printf("c=%6.2Lf,s=%6.2Lf",c,s);
return 0;
}
$ gcc -g -Wall -o main main.c
main.c: In function ‘main’:
main.c:10:20: warning: format ‘%Lf’ expects argument of type ‘long double’, but argument 2 has type ‘double’ [-Wformat=]
10 | printf("c=%6.2Lf,s=%6.2Lf",c,s);
| ~~~~~^ ~
| | |
| long double double
| %6.2f
main.c:10:29: warning: format ‘%Lf’ expects argument of type ‘long double’, but argument 3 has type ‘double’ [-Wformat=]
10 | printf("c=%6.2Lf,s=%6.2Lf",c,s);
| ~~~~~^ ~
| | |
| | double
| long double
| %6.2f
$ ./main
$
人造人 发表于 2021-8-27 12:23
在我这边 long double 没问题,但是 double 什么都不显示
啊,估计是我编译器的问题了,我的是DeV-C++可能这里有点bug wyz20010429 发表于 2021-8-27 12:31
啊,估计是我编译器的问题了,我的是DeV-C++可能这里有点bug
不是编译器的问题,是你用的输出格式不对,不知道在你那边的输出格式应该是什么
人造人 发表于 2021-8-27 12:33
不是编译器的问题,是你用的输出格式不对,不知道在你那边的输出格式应该是什么
我的无论是Lf还是lf,只要是longdouble就运行为0 人造人 发表于 2021-8-27 12:33
不是编译器的问题,是你用的输出格式不对,不知道在你那边的输出格式应该是什么
用double的话,lf还是Lf都运行正确结果 wyz20010429 发表于 2021-8-27 12:34
我的无论是Lf还是lf,只要是longdouble就运行为0
那就不知道了,不知道你那边的 long double 是什么格式
人造人 发表于 2021-8-27 12:44
那就不知道了,不知道你那边的 long double 是什么格式
逃兵 发表于 2021-8-27 12:54
用命令行编译,看看 gcc 有什么提示
gcc -g -Wall -o main main.c 人造人 发表于 2021-8-27 13:18
用命令行编译,看看 gcc 有什么提示
demo.c: In function 'main':
demo.c:10:12: warning: unknown conversion type character 'L' in format [-Wformat=]
printf("c=%6.2Lf,s=%6.2Lf",c,s);
^
demo.c:10:12: warning: unknown conversion type character 'L' in format [-Wformat=]
demo.c:10:12: warning: too many arguments for format [-Wformat-extra-args]
demo.c:10:12: warning: unknown conversion type character 'L' in format [-Wformat=]
demo.c:10:12: warning: unknown conversion type character 'L' in format [-Wformat=]
demo.c:10:12: warning: too many arguments for format [-Wformat-extra-args] 逃兵 发表于 2021-8-27 13:41
把 Lf 改成 f 然后
gcc -g -Wall -o main main.c 人造人 发表于 2021-8-27 14:03
把 Lf 改成 f 然后
gcc -g -Wall -o main main.c
demo.c: In function 'main':
demo.c:11:12: warning: format '%f' expects argument of type 'double', but argument 2 has type 'long double' [-Wformat=]
printf("c=%6.2f,s=%6.2f\n",c,s);
^
demo.c:11:12: warning: format '%f' expects argument of type 'double', but argument 3 has type 'long double' [-Wformat=]
demo.c:11:12: warning: format '%f' expects argument of type 'double', but argument 2 has type 'long double' [-Wformat=]
demo.c:11:12: warning: format '%f' expects argument of type 'double', but argument 3 has type 'long double' [-Wformat=]
页:
[1]
2