int c;
if(b==2){c = 2;}
因为b!=2,所以c未赋初值2而只是被申明。

解决方案 »

  1.   

    真的挺怪的。不知道为什么。
    但是如果后面加个
    else  c=2;
    就能正常编译运行了。好象是局部变量即使附值了,放在if语句里也不会认为它有值,
    我瞎乱说的。:)
      

  2.   

    if(b == 2) c = 2;
    后面加上 else c=2;就可以运行了编译的时候 并不知道b==2为 true
    但是 知道2==2为 true
      

  3.   

    if(b == 2) c = 2; 
    这句话不成立,c没被付值
    所以提示没初始化。
      

  4.   

    编译器要确保局部变量必须被初始化,而编译器又没聪明到知道b就等于2,所以bcdavid(莉莉) 的说法是对的