MacBook Air M1上C代码执行终止于阶乘模块的问题求助
程序执行到阶乘模块后终止?问题出在return语句的位置!
这根本不是硬件问题,完全是代码逻辑错误导致的:
核心问题:提前return终止了程序
你在第8个模块(阶乘计算)里,把return 0;写在了打印Fim fatorial的语句之前,而且后面的第9、10模块也各自加了return 0;。一旦执行到return 0;,整个main函数会立即结束,后续所有代码都不会被执行。修复步骤
- 删掉第8、9、10模块里的所有
return 0;,只在整个main函数的最后保留一个return 0;。 - 阶乘计算用
int类型容易溢出(比如13的阶乘就超出int的取值范围了),建议把fatorial改成long long类型,对应的printf格式符改成%lld:long long fatorial = 1; // ... printf("O fatorial de %d é: %lld\n", numero, fatorial); - 第9模块里的
scanf("%hd", &numeroSeis);格式符错误,numeroSeis是int类型,应该用%d而非%hd(%hd对应short类型)。
- 删掉第8、9、10模块里的所有
修改后的关键代码示例
调整后的第8模块:// Inicio 8) printf("\n--------------------- Inicio fatorial ----------------------\n"); int numero; printf("Digite um número para calcular o fatorial: "); scanf("%d", &numero); long long fatorial = 1; for (int i = 1; i <= numero; i++) { fatorial *= i; } printf("O fatorial de %d é: %lld\n", numero, fatorial); printf("\n----------------------- Fim fatorial ------------------------\n"); // Fim 8)然后在整个
main函数的最后(第10模块结束后)添加:return 0;
调整完这些,程序就能完整执行所有模块了,和你的M1硬件没有任何关系。
内容的提问来源于stack exchange,提问作者Tieppo
相关产品推荐
相关产品推荐

