最近我在进行C语言的一个家庭作业项目。我们被要求编写代码,以返回您输入数字的阶乘。这很酷也很简单,但是我们还被要求编写一些东西,如果阶乘的数值大于整数的最大值,则会给您写出错误。
int main() {
int a, i;
int faktorial = 1;
a = 10;
if (a < 0)
printf("Chyba, faktorial z nekladneho cisla neexistuje. \n");
else {
for (i = 1; i <= a; ++i) {
faktorial *= i;
}
printf("Faktorial z %d = %d\n", a, faktorial);
}
return 0;
这是我的代码,如果阶乘的值大于int类型的值,代码就无法正常工作。我尝试使用if语句,例如:if (阶乘 > 2147483647) 就输出错误信息,但是它并没有起到作用,阶乘仍然等于0。
if(INT_MAX / i < faktorial) {/* 将会溢出 */}
。请注意,本句中的“faktorial”为未翻译的变量名,保持原样即可。 - Weather Vane