作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这是一个基本的 C 代码,根据我的说法,它应该抛出三个错误(函数未定义、函数不返回任何内容、函数参数丢失)。但令我惊讶的是它没有抛出任何东西,它编译并给出了一些垃圾结果:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a=f1();
printf("a %d\n",a);
system("PAUSE");
return 0;
}
f1(int *t)
{
printf("t %d", t);
}
PS: 我在 Windows 上使用 gcc 编译器。
最佳答案
在 C 中,如果未声明函数,则假定返回 int
并继续编译(顺便说一句 this can lead to nasty bugs)。如果函数声明时没有类型(如 f1()
在您的代码中,则假定返回 int
。不从非 void 函数返回值(如在你的代码中)是未定义的行为。
因此,您提到的所有点都不是导致编译错误所必需的。不需要未定义的行为来阻止您的程序运行 - 该程序可能会运行,甚至可能会产生漂亮的结果。
关于c - 荒谬的汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062302/
瑾色 残颜 荒妙 离故 末栀 荒谬 速恋° 如若 暖然 浅黛っ 疏离 柔眸 蝶变 柠栀。 消逝 斑驳 梦巷 落墨 遗梦 守候 悸动° 初
我是一名优秀的程序员,十分优秀!