CIL bayt kodunu makine tüketimi için C kaynak koduna dönüştüren bir program yazıyorum. Ondalıktan ve ondan dönüşüme bağlı olarak kayan nokta sabitlerindeki yanlışlıktan endişeliydim. Bazı araştırmalar yaptıktan sonra, C (fakat C++ değil) 'in kayan nokta sabitleri için onaltılık bir notasyonu kabul edebildiğini keşfettim.Onaltılık kayan nokta sabitini reddeden VC
Denemeye karar verdim, ancak ne yaptığımın bir önemi yok MS VC9 bana hata veriyor. 1x2^1 den,
// Switches: /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /FD /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /ZI /TC
#include <tchar.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
double d = 0x1.0p+1; // error C2059
//double d = 0x1p+1; // doesn't work either
//double d = 0x1p1; // doesn't work either
//double d = 0x1.0p1; // doesn't work either
printf("%f\n", d);
return 0;
}
bu 2 çıktısını bekleniyor, ama bunun yerine bana bu derleyici hata veriyor:
error C2059: syntax error : 'bad suffix on number'
C++ değil fark İşte çalışıyorum budur Bu sözdizimini destekle (ya da okuduğumda), ancak bunun /TC
ile derlendiğini fark ettiğinden düz C olmalı ve iyi bir ölçüm için *.c
dosya adı kullandım.
Burada yanlış bir şey mi yapıyorum yoksa VC9 standartlara uygun değil mi?
Onay için teşekkür ederiz; Korkarım ki böyle bir şeydi. C99 öncesi derleyiciler için ondalık bilimsel gösterim için bir anahtar eklemek zorunda kalacağım sanırım. – Kevin