#include "stdio.h"
#include "string.h"
#include "stdlib.h"
short int main()
{
int i;
char a[]="0.00000001";
long double ld_a;
char **endptr=NULL;
printf("a is : %s\n",a);
ld_a=strtod(a,endptr);
printf("after calling strtod(),a becomes to: %20.15f\n",ld_a);
scanf("%d",&i);
return 1;
}
linux 下运行结果:
a is : 0.00000001
after calling strtod(),a becomes to: -0.000000000000000
而 windows 下运行结果却是:
a is : 0.00000001
after calling strtod(),a becomes to: 0.000000010000000
organization 于 2007-09-22 16:32:42发表:
请问楼主我用gcc -o *.exe *.c编译的程序怎么不能在windows下运行呢?说是什么位置的16位应用程序。请告诉我怎么编译在windows下可以运行的c文件。谢谢。
michaeljakson 于 2007-09-22 00:10:58发表:
支持
luciffer 于 2007-09-19 12:54:09发表:
一看就知道你这个程序是有问题的,或者不是作者想要的结果。那个参数根本就没传进去!!!!!!!那来的结果。就算有结果也是个随机的,因为指针根本什么地方也没有指向。如果是一个好一点的编译器,连编译都过不了,还结果呢。
tangfei 于 2007-09-14 23:58:50发表:
tusheng:
char a[]="0.00000001";
此用法是正确的,因为这是字符数组,相当于字符串,没给它定义多长,如它“=”后面有n个字符,此字符数组长度就为n+1,因为还有一个是"\0"(字符串结束符)。
我想问大家两个问题:
1:short int main()
这个short是什么意思
2:char **endptr=NULL;
这里两个*是干什么用的
希望哪位高手能详细点给我解答,谢谢
tusheng 于 2007-09-14 06:39:55发表:
scanf("%d",&i);
return 1;
是什么意思?
你运行的时候 ,a[]里头应该是定义大小的吧
yorktown 于 2007-09-14 06:35:50发表:
不过楼主 最后的 return 1; 算什么阿!
yorktown 于 2007-09-14 06:35:15发表:
strtod()是将字符串转换成长整型数
其实在全在windows下,不同的编译器,结果也可能不同,就像 long double 不同编译器,它们所占位数也不一样的