不包含stdlib.h时,strtod结果诡异

平常心006 2014-02-11 10:46:47
我的测试程序中调用了strtod,不包含stdlib.h头文件时结果诡异。
包含stdlib.h头文件时,结果是对的。
百思不得其解,望大家帮帮忙啊

我使用的编译命令:gcc t.c
运行:./a.out

下面是t.c文件:
#include <stdio.h>
//#include <stdlib.h>

int main(void)
{
char szBuf[] = "123.123";
double fRslt = strtod(szBuf, NULL);
printf("%f\n", fRslt);

return 0;
}
...全文
244 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-02-12
  • 打赏
  • 举报
回复
引用 6 楼 ielxd1989 的回复:
[quote=引用 5 楼 zhao4zhong1 的回复:] 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
这种代码在vc6中是编不过的,gcc这样可以编过,很容易坑人啊。[/quote] 研究一下gcc的命令行选项: [root]# gcc --help [root]# gcc -v --help
平常心006 2014-02-12
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
这种代码在vc6中是编不过的,gcc这样可以编过,很容易坑人啊。
赵4老师 2014-02-12
  • 打赏
  • 举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行! VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
平常心006 2014-02-12
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
搜“隐式声明”
隐式声明都是以int作为返回值类型的。 而strtod实际上返回的是double,会不会是编译器生成代码时,按照整形返回值来取strtod的结果,导致取到的返回值不正确呢?
赵4老师 2014-02-11
  • 打赏
  • 举报
回复
搜“隐式声明”
平常心006 2014-02-11
  • 打赏
  • 举报
回复
引用 1 楼 FancyMouse 的回复:
你开-Wall编译看看它给你啥警告
[root@localhost Test]# gcc -Wall t.c t.c: 在函数‘main’中: t.c:7: 警告:隐式声明函数‘strtod’
FancyMouse 2014-02-11
  • 打赏
  • 举报
回复
你开-Wall编译看看它给你啥警告

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧