Онлайн компилятор C

#include <stdio.h> int main() { int a, b, i; scanf("%d%d", &a, &b); if (a >b) i = b; else i = a; for (; i <= (a <b ? a : b); i++) printf("%d", i * i * i); return 0; }
这段代码试图输出从较小数到较大数之间所有整数的立方。但代码中存在逻辑错误,导致输出结果不正确。

- 在 `for` 循环的条件中,`i <= (a < b ? a : b)` 这个表达式实际上取的是 a 和 b 中较小的那个数,而不是较大的数。因为 `a < b ? a : b` 返回的是较小的值,所以循环条件变成了 `i <= 较小数`,而 i 的初始值已经是较小数,因此循环只会执行一次(当 i 等于较小数时),无法遍历到较大数。

- 另外,`if (a > b) i = b; else i = a;` 这段代码将 i 初始化为 a 和 b 中的较小值,这个思路是对的,但循环条件需要修正为比较 i 和较大值。