鱼C论坛

 找回密码
 立即注册
查看: 2980|回复: 4

[已解决]k = (int)sqrt(m);

[复制链接]
发表于 2022-11-19 07:38:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
k = (int)sqrt(m);

对于定义这个k值---是用来计算m的平方根,并对其取整;
那这里是为什么要加(int)来取整,int为什么要加括号?
不加(int)可以吗?
最佳答案
2022-11-19 08:15:20
本帖最后由 jackz007 于 2022-11-19 08:19 编辑

        sqrt() 返回值的类型是 double,加了 (int) 意思是把返回值类型强制转换为 int 再赋值给整型变量 k,如果不喜欢,完全可以不加,没有任何问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-19 08:15:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-11-19 08:19 编辑

        sqrt() 返回值的类型是 double,加了 (int) 意思是把返回值类型强制转换为 int 再赋值给整型变量 k,如果不喜欢,完全可以不加,没有任何问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-19 10:04:01 | 显示全部楼层
这个得看具体情况,能把题目和完整代码发一下么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-20 10:45:47 | 显示全部楼层
看你的k值是啥如果是long类型那就不用强转
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-20 19:26:34 | 显示全部楼层
Q: 那这里是为什么要加(int)来取整?

A: 这个取决于你的要求,如果你只想要整数部分,就可以用 (int) 进行强制转换,强制转换时就会失去小数的精度,从而把一个小数转换为整数
反之,如果你想要小数位数,则不需要 (int)
所以,这里没有为什么!

Q: int为什么要加括号?

A: 必须这样写,通常声明变量时无需加括号,例如 int k; 表示声明了一个 int 类型的 k 而已,但是 (int)k 就是为了把 k 强制转换为 int 类型,你写成 k = int sqrt(m) 编译器就不认识你是什么意思了,因为这个语句中既有赋值,又有声明,而且声明得又不对,只能报错
这个也是 C/C++ 的基本语法,同样没有什么讲法可言
所以,这是必须加上括号的!
Q: 不加(int)可以吗?

A: 正如第一个问题的答案所说,根据你的要求,要求!
所以,可以!根据你的要求!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 09:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表