不同機器編譯出的結果不同
❶ 為什麼相同的代碼相同的編譯器在不同電腦上的運行結果不同
樓主忽略了 調用函數f1 時,c 沒有賦初值就直接判斷
在樓主程序的基礎上略作修改
截圖
win linux 兩個平台 都測試過
❷ 同一代碼在不同編譯器上顯示不同
出來結果不是看運行的機器是多少位,而是看這個程序是多少位的,即使你的機器是64位出來的結果還是這樣
你用tc這個16位編譯器,出來的是16位程序,那麼裡面的東西都是按照16位來的
你用vc按32位進行編譯,出來的是32位程序,那麼裡面的東西都是按照32位來的
相信你是自己明白為何16和32位出來不同結果,我也不解釋了
計算機多少位的你可以下載個CPU-Z進行查看,還能看出操作系統多少位
計算機多少位 操作系統多少位 程序多少位 都是不同的概念
我的機器64位 操作系統32位 可以運行多數的32位 和 16位 windows或dos程序,但是一般的64位程序運行不了,因為操作系統只有32位。
❸ 用c語言寫了一個程序,如圖。請問為什麼用不同編譯器執行同樣代碼,結果不同
把 這一句: int b = b + 1;
改為 b = b + 1;
結果就一樣了
因為你在while中重新定義了變數b,但是沒有給b賦值,b的值是隨機的,有可能出現任何值
❹ 不同編譯器會不會產生不同的結果
會有不同的結果。因為編譯器不同自帶的庫函數也不一樣。
❺ 不同的機子,怎麼執行程序結果不一樣啊
因為不同的機子參數不一樣,有可能你的程序代碼含有默認本機內置參數
❻ 為什麼匯編代碼在不同編譯器上結果不一樣
也許是masm版本不同引起的,高版本功能更強、會進行某些優化。
另,有些功能,在匯編中也會有不同的實現方式;再,高版本對偽指令的用法也許進行優化調整。
❼ 說是c語言可移植性好 怎麼書上說不同的機器完成的結果不同 結果是跟操作系統有關還是跟cpu有關
都有關系。
一些有爭議的寫法,比如很多的+在一起,機器編譯的結果可能是不一樣的,可能是編譯器不同,也可能是硬體結構不同造成的。
CPU的指令,結構不同啊,編譯到底層的指令和執行順序肯定是有差別的。
有些地方int默認是16位的,有時是32位的,還有64位的,硬體和操作系統得在不斷變化,之前那裡料得到。
❽ 同樣一段代碼,為什麼編譯器不同會不同結果
這很正常,每種語言的標准只是給出了該語言實現的最小集合,而廠家或者開源社區做編譯器的時候,只要遵循這些標准就可以,在此基礎上增加的非標准功能,就有可能不一致了。
❾ c語言,不同的編譯器會得出不同的結果
應該是2 12 30
這里是典型的宏定義的負效應
S(i++)代換完就是(i++)*(i++)
不管按照什麼次序,比如
i=1, 先算i++返回1,而i的值變成了2,後面一個i++,返回2,則i的值變成了3
以下類推
❿ 一個C++小程序,在不同編譯器里運行結果不一樣,怎麼回事
r和c都沒有初始化,你就while(++r)了,當然結果不一樣。
在這種情況下,一般r,和c是隨機值,但一般是編譯器給的一個負數。
int r=0;
int c=0;