C++编译器对属性的初始化检查远没有Java严格

// Java编译通过:

class yy

{

public static void main(String[] args)

{

int i;

System.out.println("Hello World!");

}

}

// Java编译通不过,在打印那行说i没有初始化。这说明Java的编译检查比C++严格。

class yy

{

public static void main(String[] args)

{

int i;

System.out.println("Hello World!"+i);

}

}

// 更不用说在未初始化的情况下,i++了

class yy

{

public static void main(String[] args)

{

int i;

i++;

System.out.println("Hello World!"+i);

}

}

// C++编译通过,运行也没有问题,只是i打印出来是一个内存里的随机值:-858993460

int main(int argc, char* argv[])

{

int i;

printf("%d\n",i);

return 0;

}

// C++编译通过,运行通过,i打印出来是-858993459(真的做到了 -858993460 +1)

int main(int argc, char* argv[])

{

int i;

printf("%d\n",++i);

return 0;

}

结论:C++对于初始化的检查,远远不如Java严格。这里根本没有涉及到指针的问题。