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

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严格。这里根本没有涉及到指针的问题。

posted @ 2013-09-04 05:28  findumars  Views(582)  Comments(0Edit  收藏  举报