0unique0 发表于 2022-11-19 07:38:48

k = (int)sqrt(m);

k = (int)sqrt(m);

对于定义这个k值---是用来计算m的平方根,并对其取整;
那这里是为什么要加(int)来取整,int为什么要加括号?
不加(int)可以吗?

jackz007 发表于 2022-11-19 08:15:20

本帖最后由 jackz007 于 2022-11-19 08:19 编辑

      sqrt() 返回值的类型是 double,加了 (int) 意思是把返回值类型强制转换为 int 再赋值给整型变量 k,如果不喜欢,完全可以不加,没有任何问题。

tommyyu 发表于 2022-11-19 10:04:01

这个得看具体情况,能把题目和完整代码发一下么

homeskating 发表于 2022-11-20 10:45:47

看你的k值是啥如果是long类型那就不用强转

zhangjinxuan 发表于 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: 正如第一个问题的答案所说,根据你的要求,要求!
所以,可以!根据你的要求!
页: [1]
查看完整版本: k = (int)sqrt(m);