出现了一个对我来说不是很清楚的问题,因为直到现在它还没有发生在我身上,那就是当我解决 C 书上的练习时,回顾我以前的代码,我注意到在 int 类型的函数中,我忘记了放置返回值,它仍然返回我想要的值,我也在测试 emacs,当我激活 LSP 时,我收到一个警报,但是当我编译它时,它不会给我任何返回值丢失的警告,因为我总是习惯于返回非 void 类型的函数,所以我的问题是为什么会发生这种情况?我知道这主要发生在它自己的功能中,但没有发生。我附上了该函数的屏幕截图和源代码(“次要”标识符,我只是将其放入以查看是否发生了某些情况并返回了错误)。
int long_word(int *m) {
int min = 0;
int max = 0;
for (int i = 0; i < 15; i++) {
if (m[i] > max) {
max = m[i];
}
}
}
您的程序表现出未定义的行为。例如,以下内容: 返回
0
这不是正确的结果,所以看起来您正在获取最后一个值:
#include <stdio.h>
int long_word(int *m) {
int min = 0;
int max = 0;
for (int i = 0; i < 15; i++) {
if (m[i] > max) {
max = m[i];
}
}
}
int main(void) {
printf("%d\n", long_word((int []) {1, 2, 7, 13, 421, 2, 7, 13, 42, 12, 582, 32, 21, 42, 0}));
}