-1

当仅在源代码中定义任意数量的变量并尝试在不初始化的情况下打印它时。我得到最后两个变量的值为零和一个或两个其他变量。最后两个变量就像盲目地(至少对我来说)我们可以说它被宣布为零。

当我在函数内部定义变量时,存储类默认是自动的,它的值是垃圾值,在这种情况下,为什么每次最后两个变量都显示为零,而对于其他一些为零的变量,在多次执行后没有变化.

笔记

1.如果我将最后两个零值和其他带零的变量作为垃圾,那么为什么执行后零不改变而其他值在执行后改变。

2.无论如何,定义了任意数量的变量的最后两个变量将为零。为什么这只发生在最后两个变量上。

3.这不仅发生在我在 Windows 8 和 Linux(pop Os) 中使用 gcc 编译器尝试使用 vs 代码的在线编译器中,因为 C 程序依赖于平台。

CPP的情况也是如此

第一次执行图片

第二次执行图片

代码

#include<stdio.h>
int main(){
   int a,b,c,d,e,f;
   printf("%d\t%d\t%d\t%d\t%d\t%d\t",a,b,c,d,e,f);
   return 0;
}

执行背后有什么逻辑吗。有人请解释一下。谢谢。

4

1 回答 1

0

如果你不初始化一个变量并使用它的值,它将导致未定义的行为。例如,

int i; //i has not been initialized and so holds garbage value
printf("%d\n",i);//this will lead to undefined behavior. 

未定义的行为意味着任何事情1都可能发生,包括但不限于给出预期输出的程序。但永远不要依赖(或基于)具有未定义行为的程序的输出。


1有关未定义行为的更技术上准确的定义,请参见此处提到:对程序的行为没有限制

于 2021-12-30T17:45:58.567 回答