我正在處理這個簡短的算法,它提示用戶鍵入一個整數,輸出將是整數需要多少位:但是,當我輸入非常大的數字時,輸出變爲負數。我不希望產生負面結果。我怎樣才能解決這個問題?還有更好的方法來應用這個過程?計算一個整數需要多少位C
int numberHowBig =0;
printf("How many Bits? ");
scanf(" %d", &numberHowBig);
printf("n\n");
int myIncrementor = 1, myMultiplier = 1,
finalValue = 1;
while (myIncrementor < numberHowBig){
myMultiplier *=2;
finalValue = finalValue + myMultiplier;
myIncrementor++;
}
if ((numberHowBig == 0) || (numberHowBig == 1)){
printf("Top value: %d\n\n", numberHowBig);
} else {
printf("Top value: %d\n\n", finalValue);
}
嘗試'long'和格式說明'%ld'。除非以字符串的形式讀取數字,否則將始終存在機器限制。 –
您必須採取溢出,'int'被簽名的事實以及可以適合您所選類型的最大數字。請注意,您可以簡單地將該數字移至右側,並計算需要多少次移位才能使其獲得相同的結果,例如:int s = 0; while(number >> = 1)++ s;' – Jack