我正在处理这个简短的算法,它提示用户键入一个整数,输出将是整数需要多少位:但是,当我输入非常大的数字时,输出变为负数。我不希望产生负面结果。我怎样才能解决这个问题?还有更好的方法来应用这个过程?计算一个整数需要多少位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