C에서 제곱에 의한 지수화 알고리즘을 구현하려고했지만 프로그램에 이상한 동작이 있습니다. 내가 가진 함수를 호출 할 경우제곱에 의한 지수화 C 구현
long long fast_power_1(long long base, long long power){
long long result = 1;
while (power > 0)
{
if (power % 2 == 0)
{
power = power/2;
base = base * base;
}
else
{
power = power - 1;
result = (result*base);
power = power/2;
base = (base * base);
}
}
return result;}
: 첫째, 여기에 작은 코드 조각입니다
printf("%d\n",fast_power_1(2,100));
내가 출력이 976,371,285 같은 것으로 예상하지만, 결과는 0을 그리고 난하지 않습니다 이유를 확실히 이해합니다.
Fyi, '% d'은 (는) 'long long'에 대한 올바른 형식 지정자가 아닙니다. 설명서를 참조하십시오. – WhozCraig
long long이 64 비트 일 가능성이 높으면'2 ** 100'은 long long에 적합하지 않습니다. –
'long long'은 100 비트가 될 것 같지 않습니다. –