![]() |
1
5
首先
第二,你的
最后,你不应该调用自己程序的入口点,更不用说使用递归了。 |
![]() |
2
1
以下是C标准草案(N1570)的内容
显然
|
![]() |
3
1
此程序具有 undefined behavior (UB),如果你的程序中有一个单独的实例未定义的行为,你不能安全地假设你的程序的任何输出或行为-它合法地可以发生任何事情(尽管在现实世界中,效果通常在代码中的UB位置附近有点本地化)。 旧的C90标准列出了100多个(如果我记得正确的话)UB的情况,并且顶部有未知数量的UB,这是标准没有描述的情况下的行为。对于每个C和C++标准,都存在一组UB情况。 在您的情况下(没有咨询标准),UB的实例至少是:
由于您的程序中至少有一个UB实例,因此对结果的推测有点。。。推测性的,并且必须对编译器、操作系统、硬件,甚至并行运行的软件进行假设,这些假设通常是没有文档记录的或可以知道的。 |
![]() |
4
0
您没有初始化i,因此默认值将取自存储在RAM中的地址。 如果在重新启动计算机后多次运行该代码,则该代码将产生垃圾输出。 输出也将取决于编译器。 |
|
5
0
我很惊讶竟然能编译。 当操作系统实际运行程序并调用main()时,会向其传递两个32(或64)位值。您可以通过声明main(void)来忽略它们,也可以通过声明main(int argc,char**args)来使用它们。 正如上面的原型所示,传递的第一个值是传递给进程的命令行参数数量的计数,第二个值是指向这些参数列表存储在内存中的位置的指针,可能是程序的本地堆栈上。 argc的值始终至少为1,因为args中的第一个项字符串始终是由OS生成的程序本身的名称。 关于你的意外输出,我想说一些东西没有被拉出来或推到堆栈上,所以变量被混淆了。这可能是因为main()的参数列表不完整,或者您声明main返回int,但没有返回任何内容。 |
|
6
-2
我认为,主方法是在主方法内部调用自己。 为了增加变量的值,i++在其增加之前先打印i的值,而++i在打印i的之前先增加i的值。 你可以用这个。。
|
![]() |
Dimitriy Glefa · 返回和运行时 2 年前 |
![]() |
ck1987pd · python中检查循环是否未执行的最佳方法 3 年前 |
![]() |
Salman Shaukat · 如何检查函数中执行了哪个返回语句? 6 年前 |