i之后定义的值是:int i,j = 1;

时间:2010-12-15 13:14:12

标签: c++

假设:

int i, j = 1;

是否定义了i的值?如果是这样,它是什么?

我怀疑这是重复的,但搜索起来有点困难 - 如果有人能找到它让我知道。

8 个答案:

答案 0 :(得分:14)

  • 全局变量初始化为 默认为默认值(0 for int)
  • 未初始化局部变量 默认情况下

例如:

#include <iostream>

int a, b=1; // a=0, b=1

int main(void) {
 int p, q=1; // p=undef, q=1
 return 0;
}

局部变量证明:

#include <iostream>
int main(void) {
  {
    int x = 99; // change stack where a would be
  }
  int a, b=0;
  std::cout << a << std::endl;
  return 0;
}

答案 1 :(得分:5)

如果此代码在全局范围内,则i将为0.否则i未定义。

答案 2 :(得分:2)

如果这是定义局部变量,则不会定义i的值。

答案 3 :(得分:2)

不,它没有定义,如果您尝试使用它,编译器应该抱怨,具体取决于语言。

答案 4 :(得分:1)

您展示的代码相当于:

int i;
int j = 1;

这意味着i已定义,但尚未初始化。

答案 5 :(得分:1)

i将是未定义的。如果您尝试使用i而不指定某些内容,则会导致未定义的行为。

任何好的编译器都会警告你这样的事情。使用类型为int的未定义变量可能是无害的,但不要使用未定义的指针。

也许不是今天,但前段时间,在充足的硬件和软件保护之前,你可能会使用带有未初始化变量的指针来损坏机器的BIOS。

故事的道德:如果没有初始化,请不要使用它。

答案 6 :(得分:0)

int i是一个定义语句,但没有赋值。

Extern int i是声明。

答案 7 :(得分:0)

变量i可以包含从0到垃圾的任何内容。 请参阅以下链接

http://www.intap.net/~drw/cpp/cpp03_02.htm了解更多信息