저는 64 비트 운영 체제를 사용하고 있으며, 또한 40 번째 피보나치 수를 정확하게 인쇄 할 수 없습니다. 정확히 40 억 미만입니다.47 번째 피보나치 번호를 올바르게 인쇄 할 수없는 이유는 무엇입니까?
#include<cs50.h>
#include<stdio.h>
int main(void)
{
unsigned int n=50;
int array[n];
array[0]=0;
array[1]=1;
printf("%i\n",array[0]);
printf("%i\n",array[1]);
for(int i=2;i<n;i++)
{
array[i]=array[i-1]+array[i-2];
printf("%i\n",array[i]);
}
를' int array [n]; printf ("% i \ n", array [i]);'->'부호없는 int 배열 [n]; – kaylum
@kaylum unsigned int는 여전히 49 번째 요소에서 범위를 벗어납니다. printf ("% u \ n", array [i]); –
@RishikeshRaje 네, "47 번째로 인쇄 할 수없는 이유는 무엇입니까?" 변경하면 47 번째가 올바르게 인쇄됩니다. 그리고 OP는 구체적으로 OP가 32 비트 숫자의 범위에 대해 알고 있다는 것을 의미하는 것으로 보이는 "40 억"을 언급 했으므로 이전에는 그렇지 않았지만 번호를 초과하면 넘침을 볼 수 있습니다. – kaylum