以下のプログラムをVC++5.0(ServicePack3)で動かすとReleaseとDebugで結果が違います。
/* VC++5.0のバグ! 1999/12/20 山下 宏 以下のプログラムをWin32Consoleアプリケーションで作成する。 VC++5.0(SP3)では Releaseで c=1.0 になり、Debugでは c=0.0 になる。 VC++4.0, VC++6.0では正しく c=0.0 になる。 */ #includestruct { double x; double y; } pt; double dbl_test(double *a, double *b) { int count = 1; double x,y; x = pt.x; y = pt.y; if ( y != 0 ) count++; *a = x; *b = x / count; return ( y / count ); } int main(void) { double a,b,c; a = b = 0; pt.x = pt.y = 0; c = dbl_test(&a,&b); printf("a=%f,b=%f,c=%f\n",a,b,c); return 0; }
IS将棋の後藤さんが見つけたバグ こっちの方がもっとやばそうですねぇ・・・