2014-02-06 75 views
1

我在這裏迷失了主意。請有人幫助我瞭解發生了什麼事。賦值給float數據類型崩潰程序

#include <stdio.h> 
#include <conio.h> 
#include <string.h> 
#include <windows.h> 

int main(int argc, char *argv[]) 
{ 
    float test; 
    printf("You see me\n"); 
    test = 3; 
    printf("Wont get here\n"); 

    return(0); 
} 

你看到我被打印出來,然後應用程序崩潰之前,不會得到這裏打印。

重要的是要注意,這編譯和運行我的系統很好,但是當這個exe被轉移到一個32位,Windows XP機器崩潰。

Ints,Bools,char數據格式工作正常,但是當我嘗試使用浮動/雙打時,應用程序只會崩潰而沒有錯誤。

我是不是在Visual Studio Express 2013中以某種方式正確編譯它,任何人都可以想到?我應該讓自己進入當地的病房嗎?

+1

這是編譯爲32位應用程序嗎? – OldProgrammer

+1

它適用於使用g ++的紅帽子,也適用於我 - https://ideone.com/pOoO3u請注意,我在Unix平臺 – Bill

+0

上評論過'windows.h'和'conio.h'會發生什麼情況如果你指定3.0? –

回答

0

好的在一位同事的幫助下找到了問題。

Windows機器有一個較舊的處理器,Geode集成處理器。

找到答案在這裏:http://msdn.microsoft.com/en-us/library/7t5yh4fd.aspx

  1. 打開屬性頁對話框對於項目框。
  2. 選擇C/C++文件夾。
  3. 選擇代碼生成屬性頁面。
  4. 修改啓用增強指令集屬性。

在我的情況下,我需要將其更改爲/ arch:IA32。巴姆!作品!謝謝大家的頭腦風暴會議。