下面的代碼完美運行。給出正確的輸出,但是當我將變量的符號從signed變爲unsigned時,程序運行到無限循環。 該程序是要找到整數的階乘。 任何變量的值在任何地方都不爲負 我知道unsigned int的模塊行爲。爲什麼數據類型爲unsigned int時會出現無限循環?
#include<stdio.h>
int main(void)
{
int a[200], i,index, number, next, count, temp, test, x;
scanf(" %d", &test);
while(test--)
{
scanf(" %d", &number);
a[0]=1;
count=1; //1 digit
for(next=2;next<=number;++next)
{
index=0;temp=0;
for(i=0;i<count;++i)
{
x=a[index]*next+temp;
a[index]=x%10;
temp=x/10;
++index;
}
while(temp!=0)
{
a[count++]=temp%10;
temp=temp/10;
}
}
for(i=count-1;i>=0;--i)
printf("%d",a[i]);
printf("\n");
}
return 0;
}
我想你的意思是說'i> = 0'是成立的。 – Jens
'(i = 0)> 0 == false'問題出在for循環測試'i> = 0'。 – datenwolf
@Jens對,在某個點可能是'0',所以'i> 0'並不總是對的。 –