首页 > 试题广场 >

以下程序的输出结果是(

[单选题]

以下程序的输出结果是( )

int main()
{
 int i, sum=0;
 for(i = 2; i < 6; i++)
 {
 sum += i * (i - 1);
 }
 printf("%d\n", sum);
}

  • 40
  • 70
  • 30
  • 0
A
在定义中为初始化的变量int类型默认为0(如下图所示,sum在未被初始化值为0
执行for循环
  • i=2,sum=2
  • i=3,sum=8
  • i=4,sum=20
  • i=5,sum=40

发表于 2020-02-08 00:34:08 回复(0)
更多回答
本题选C考察C语言中变量初始化的问题。
运行四次结果分别如下,可以看到每次运行结果都不一样:

在程序中 变量sum 在定义的时候没有进行初始化,因此这个程序的输出应该是属于“未定义”的范畴的,所以没法预测,不同的编译器可能会把栈内存初始化成不同的东西。
这个程序在Visual Studio下运行则会报错:

可以看到错误是使用了未初始化的局部变量“sum”。
综上,本题的输出结果无法确定,因此选C。
编辑于 2020-02-11 11:02:26 回复(5)
不说了,我这个编译器默认sum初始值为8。一般资料上都会说默认值为0
发表于 2020-02-09 20:54:05 回复(1)