C 中的函数即使没有指定它应该返回什么,也会返回正确的值

问题描述 投票:0回答:1

出现了一个对我来说不是很清楚的问题,因为直到现在它还没有发生在我身上,那就是当我解决 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];
    }
  }
}

c function return
1个回答
0
投票

您的程序表现出未定义的行为。例如,以下内容: 返回

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}));
}
© www.soinside.com 2019 - 2024. All rights reserved.