问一下《The C Prpgramming Language》P45几句话的意思

hotsizzle183 2011-10-20 03:28:48
描述一下:
它是在讲强制类型转换的内容,标准库函数sqrt的参数要求是double的,所以我们可以使用sqrt((double)n)来调用,其中n是int。之后几句话没看懂,最后它又讲root2 = sqrt(2),可以自动把2转换成double的2.0。想问一下中间的几句话是什么意思?

中间几句话如下:
If arguments are declared by a function prototype,as they normally should be,the declaration causes automatic coercion of any arguments when the functtion is called. Thus,given a function prototype for sqrt:
double sqrt(double)
the call
root2 = sqrt(2);......

谁能通俗地解释一下?
...全文
99 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2011-10-20
  • 打赏
  • 举报
回复
如果函数原型中指明了参数的类型,当调用函数时实参将自动转换为声明的参数类型
wangluoqingfeng 2011-10-20
  • 打赏
  • 举报
回复
意思是如果有函数原型,你在调用时系统可以隐形转换的也可以,正如那个例子,声明的参数是double类型,所以你用2直接传过去会隐形转换,不过 只是针对这种情况,如果事先定义变量,如:int i=2;sqrt(i)是不行的
ljhhh0123 2011-10-20
  • 打赏
  • 举报
回复
在中文版里没有翻译吗?
七擒关羽 2011-10-20
  • 打赏
  • 举报
回复
double sqrt(double n) 这个应该能看懂吧?
它是一个函数,参数是double型,返回类型是double型,当我们把int型传进去的时候需要进行强制转换,也就是需要形参类型一致,需要赋值的对象也需要一致
例子:

int n = 2;
double root2;
root2 = sqrt((double)n);//强制转换
赵4老师 2011-10-20
  • 打赏
  • 举报
回复
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
赵4老师 2011-10-20
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
ProgrammingRing 2011-10-20
  • 打赏
  • 举报
回复
是说声明了函数原型然后会自动转换的吧比如:
原型:
double sqrt(double);
调用:
sqrt(2); == sqrt((double)2);
qq120848369 2011-10-20
  • 打赏
  • 举报
回复
路过sqrt(2)能编译通过么.

69,371

社区成员

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

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