user-0 提问: 一个关于difftime（）的问题....

回复:
user: user-1
content: 引用 6 楼 zhao4zhong1 的回复:[quote=引用 5 楼 Z5813 的回复:] [quote=引用 2 楼 zhao4zhong1 的回复:] #include <stdio.h> #include <time.h> #include <windows.h> int main(){     time_t start,end;     double duration;     start = time(NULL);     Sleep(2500);     end = time(NULL);     printf("\n\nstart :%d\n",start);     printf("end   :%d\n",end);     duration = difftime(end,start);     printf("duration:%f\n",duration);     return 0; } // // //start :1400815736 //end   :1400815738 //duration:2.000000 //  我这边VC6运行没问题。  楼主重建所有了吗？ 我怕没有@到你，重新回复一下吧。 就是我用的是DEV C++和CODEBLOCK，编译器是MinGW的GCC，版本是4.8.1，没有用VC6试过 我分别在这两个IDE里建项目试过，结果都是一样，我怀疑和编译器有关Y_Y...但是又找不到difftime的源码[/quote] 别总以为Linux系的东东一定比Windows系的东东更开源！  先 http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’，再点立即安装  再参考C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\difftime.c /*** *difftime.c - return difference between two times as a double * *       Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: *       Find difference between two time in seconds. * *******************************************************************************/   #include <cruntime.h> #include <time.h> #include <internal.h>  /*** *double _difftime32(b, a) - find difference between two times * *Purpose: *       returns difference between two times (b-a) * *Entry: *       __time32_t a, b - times to difference * *Exit: *       returns a double with the time in seconds between two times *       0 if input is invalid * *Exceptions: * *******************************************************************************/  double __cdecl _difftime32 (         __time32_t b,         __time32_t a         ) {         _VALIDATE_RETURN_NOEXC(             ( ( a >= 0 ) && ( b >= 0 ) ),             EINVAL,             0         )          return( (double)( b - a ) ); }  [/quote]   您好！请教一下difftime的参数能自己输入吗？我用%d获取的，为什么就不对？ http://tieba.baidu.com/p/4067042157

user: user-1
content: 引用 3 楼 Z5813 的回复:我用的是MinGW的编译器 = =，在dev c++ 和codeblock里面结果都是一样的只返回第一个参数， 如果用VC6没问题的话，我想跟编译器有关系了Y_Y   CFree测试正常，用的是MinGW的编译器。

user: user-2
content: #include <stdio.h> #include <process.h> #include <windows.h> #include <time.h> int main(){     time_t start,end;     double duration; 	system("cls");     start = time(NULL);     Sleep(2000);     end = time(NULL);      printf("%s",ctime(&start));      printf("%s",ctime(&end));     duration = difftime(end,start);     printf("duration:%f\n",duration); 	getchar();     return 0; } 输出格式不对 看到的结果有误

user: user-3
content: #include <stdio.h> #include <time.h> #include <windows.h> int main(){     time_t start,end;     double duration;     start = time(NULL);     Sleep(2500);     end = time(NULL);     printf("\n\nstart :%d\n",start);     printf("end   :%d\n",end);     duration = difftime(end,start);     printf("duration:%f\n",duration);     return 0; } // // //start :1400815736 //end   :1400815738 //duration:2.000000 //  我这边VC6运行没问题。  楼主重建所有了吗？

user: user-0
content: 引用 6 楼 zhao4zhong1 的回复:[quote=引用 5 楼 Z5813 的回复:] [quote=引用 2 楼 zhao4zhong1 的回复:] #include <stdio.h> #include <time.h> #include <windows.h> int main(){     time_t start,end;     double duration;     start = time(NULL);     Sleep(2500);     end = time(NULL);     printf("\n\nstart :%d\n",start);     printf("end   :%d\n",end);     duration = difftime(end,start);     printf("duration:%f\n",duration);     return 0; } // // //start :1400815736 //end   :1400815738 //duration:2.000000 //  我这边VC6运行没问题。  楼主重建所有了吗？ 我怕没有@到你，重新回复一下吧。 就是我用的是DEV C++和CODEBLOCK，编译器是MinGW的GCC，版本是4.8.1，没有用VC6试过 我分别在这两个IDE里建项目试过，结果都是一样，我怀疑和编译器有关Y_Y...但是又找不到difftime的源码[/quote] 别总以为Linux系的东东一定比Windows系的东东更开源！  先 http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’，再点立即安装  再参考C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\difftime.c /*** *difftime.c - return difference between two times as a double * *       Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: *       Find difference between two time in seconds. * *******************************************************************************/   #include <cruntime.h> #include <time.h> #include <internal.h>  /*** *double _difftime32(b, a) - find difference between two times * *Purpose: *       returns difference between two times (b-a) * *Entry: *       __time32_t a, b - times to difference * *Exit: *       returns a double with the time in seconds between two times *       0 if input is invalid * *Exceptions: * *******************************************************************************/  double __cdecl _difftime32 (         __time32_t b,         __time32_t a         ) {         _VALIDATE_RETURN_NOEXC(             ( ( a >= 0 ) && ( b >= 0 ) ),             EINVAL,             0         )          return( (double)( b - a ) ); }  [/quote]  不管怎样先谢谢你！ 从VC的源码里看也没啥问题，.....，其实我现在更关心为什么在GCC里面编译出来会出现这种结果，是函数没有完全实现吗，虽然这有点不可能，PS.还有俺对linux系和win系木有歧视.... Y_Y

user: user-3
content: C:\Microsoft SDK\src\crt\difftime.c C:\Android\Mydroid\bionic\libc\tzcode\difftime.c C:\Program Files\Borland\CBuilder6\Source\Rtl\Source\time\difftime.c C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\src\crt\difftime.c C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\DIFFTIME.C C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\difftime.c C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\difftime.c C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\difftime.c D:\BC\CRTL\MATH\DIFFTIME.C

user: user-3
content: 引用 5 楼 Z5813 的回复:[quote=引用 2 楼 zhao4zhong1 的回复:] #include <stdio.h> #include <time.h> #include <windows.h> int main(){     time_t start,end;     double duration;     start = time(NULL);     Sleep(2500);     end = time(NULL);     printf("\n\nstart :%d\n",start);     printf("end   :%d\n",end);     duration = difftime(end,start);     printf("duration:%f\n",duration);     return 0; } // // //start :1400815736 //end   :1400815738 //duration:2.000000 //  我这边VC6运行没问题。  楼主重建所有了吗？ 我怕没有@到你，重新回复一下吧。 就是我用的是DEV C++和CODEBLOCK，编译器是MinGW的GCC，版本是4.8.1，没有用VC6试过 我分别在这两个IDE里建项目试过，结果都是一样，我怀疑和编译器有关Y_Y...但是又找不到difftime的源码[/quote] 别总以为Linux系的东东一定比Windows系的东东更开源！  先 http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’，再点立即安装  再参考C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\difftime.c /*** *difftime.c - return difference between two times as a double * *       Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: *       Find difference between two time in seconds. * *******************************************************************************/   #include <cruntime.h> #include <time.h> #include <internal.h>  /*** *double _difftime32(b, a) - find difference between two times * *Purpose: *       returns difference between two times (b-a) * *Entry: *       __time32_t a, b - times to difference * *Exit: *       returns a double with the time in seconds between two times *       0 if input is invalid * *Exceptions: * *******************************************************************************/  double __cdecl _difftime32 (         __time32_t b,         __time32_t a         ) {         _VALIDATE_RETURN_NOEXC(             ( ( a >= 0 ) && ( b >= 0 ) ),             EINVAL,             0         )          return( (double)( b - a ) ); }

user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:#include <stdio.h> #include <time.h> #include <windows.h> int main(){     time_t start,end;     double duration;     start = time(NULL);     Sleep(2500);     end = time(NULL);     printf("\n\nstart :%d\n",start);     printf("end   :%d\n",end);     duration = difftime(end,start);     printf("duration:%f\n",duration);     return 0; } // // //start :1400815736 //end   :1400815738 //duration:2.000000 //  我这边VC6运行没问题。  楼主重建所有了吗？ 我怕没有@到你，重新回复一下吧。 就是我用的是DEV C++和CODEBLOCK，编译器是MinGW的GCC，版本是4.8.1，没有用VC6试过 我分别在这两个IDE里建项目试过，结果都是一样，我怀疑和编译器有关Y_Y...但是又找不到difftime的源码

user: user-0
content: 引用 1 楼 longburulin 的回复:#include <stdio.h> #include <process.h> #include <windows.h> #include <time.h> int main(){     time_t start,end;     double duration; 	system("cls");     start = time(NULL);     Sleep(2000);     end = time(NULL);      printf("%s",ctime(&start));      printf("%s",ctime(&end));     duration = difftime(end,start);     printf("duration:%f\n",duration); 	getchar();     return 0; } 输出格式不对 看到的结果有误 改成 %lf还是返回一样的结果。

user: user-0
content: 我用的是MinGW的编译器 = =，在dev c++ 和codeblock里面结果都是一样的只返回第一个参数， 如果用VC6没问题的话，我想跟编译器有关系了Y_Y