gpt4 book ai didi

C:为什么将一个 int 添加到一个空变量会产生随机数

转载 作者:太空狗 更新时间:2023-10-29 17:16:22 24 4
gpt4 key购买 nike

C 的新手,当我运行这段代码时 - 发生了意想不到的事情:

#include <stdio.h>

int add();

int main(void)
{
printf("%d\n",add(3));
}

int add(int i, int j)
{
return i+j;
}

我知道我没有为 add 函数提供第二个参数。出于好奇,谁能告诉我为什么仅提供 1 个参数调用函数会继续返回随机数,例如 2127001435...612806891...-395221029?

最佳答案

如果您违反语言规则并且程序可以编译,则其行为未定义(即,任何事情都可能发生)。

int add();

告诉编译器允许你用任何东西调用add,但你仍然必须确保如果函数定义接受两个 int,您将使用恰好两个 int 调用它。

带有空参数的声明有时很有用,但在 99% 的情况下您都希望避免使用它们。

如果你用这个替换声明

int add(int, int);

编译器应该避免错误,或者至少警告您错误。

(此外,带有类型化参数的声明将使编译器在可能的情况下转换不合适的参数(例如,如果您要使用 long 调用您的 add 函数,那么对于类型化声明,long 参数将隐式转换为 int。如果声明为 int add();,则不会发生这种情况))

关于C:为什么将一个 int 添加到一个空变量会产生随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41169147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com