请问 h/=2 与 h=*1/2 有什么区别?
#include<iostream>
using namespace std;
int main()
{
double h,sum;
int i;
cin>>h;
sum=h;
for(i=1;i<=9;i++)
{
h/=2;//这里原来写的是h*=1/2,但运行结果不同,求解释
sum+=h*2;
}
cout<<sum<<endl
cout<<h/2<<endl;
return 0;
}
C语言里,1/2因为除数被除数都是整数,所以是整除,结果是0
所以
h*=1/2
是h = h * 0
无论h是多少,这一行都相当于是h = 0
而,h/=2
是h = h / 2
如果 h是偶数,那么h运算以后是原来的值的一半
如果h是奇数,那么结果相当于(h - 1) / 2
h*=1/2结果一定为0,h/2不一定为0