2014-04-15 94 views
1

我的代碼:x86/anycpu - 鑄造的區別?

decimal fAnzahlAktuell = 12; 
decimal fMenge = 2; 
decimal fAnzahlReserviertPickpos = 0; 

decimal a = ((decimal)(fAnzahlAktuell - fAnzahlReserviertPickpos)) > fMenge ? fMenge : (decimal)(fAnzahlAktuell - fAnzahlReserviertPickpos); 
decimal b = (decimal)((fAnzahlAktuell - fAnzahlReserviertPickpos) > fMenge ? fMenge : (decimal)(fAnzahlAktuell - fAnzahlReserviertPickpos)); 

當我編譯使用86 - > a和b二者= 2

當我編譯使用anycpu - > A = 2和b =

燦有人解釋爲什麼?!

編輯:我使用VS2010,.NET 4.0的Windows 7 X64的

enter image description here

+1

它爲Visual Studio 2012上的Any CPU vs x86提供了相同的結果。 – Habib

+0

根據定義沒有區別 - 但這並不排除其中一個運行時發生錯誤。 – TomTom

+1

你剛纔在調試器中看到了這個嗎?你是否在發佈模式下運行?事後你會對變量'b'做什麼?如果您將其打印到屏幕上,「b」仍然顯示爲0?您可能會看到積極優化的結果。 – Baldrick

回答

1

這是調試器的一個怪癖。

您正在觀察的錯誤報告值只能在調試器中看到。如果輸出值,例如輸出到控制檯,那麼您將看到它們都是2,適用於所有配置。