这个问题曾经在教科书上见到过,没想到自己居然遇到了。
前几天到客户那去维护程序,出现了大致如下的一段CPP代码。
int resultValue =0; if (some condition) { /* other codes */ int resultValue = /* some value */
} else { /* other codes */ int resultValue = /* some value */
} /* use resultValue */
当时代码一跑下来,发现resultValue的值是0,仔细看了一下代码,发现在对resultValue复制的时候,声明了一个新的resultValue变量,最要命的是CPP编译器不报错。
当然,C#没有这个问题。