VC++のバグのページ

VC++5.0のバグ

以下のプログラムを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 になる。
*/ 
#include 

struct {
	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将棋の後藤さんが見つけたバグ こっちの方がもっとやばそうですねぇ・・・

元のページに戻る