① 怎樣查看C/C++程序編譯過後的結果
通常在項目下的obj文件夾里,二進制文件
② C語言同一段代碼,同樣的文件,編譯器為什麼運行結果不一樣
有如下幾種可能:
1 代碼運行的平台硬體不同。
不同的CPU,如嵌入式CPU,intel CPU,以及IBM的CPU,在硬體最底層就是不同的,而C語言是一門和底層相關性極大的語言,在不同的硬體上運行出不同結果是很正常的。
2 代碼運行的系統不同。
相同CPU在不同操作系統上跑相同代碼時,一樣會出現不同的結果。這是由於系統底層的實現不同造成的。比如Linux和Windows,在底層處理上就有一定的差異。
3 編譯器不同,同時代碼中使用了C規范未定義規則的語句。
C語言規范並沒有對C語言的所有行為做定義,所以相同語句,不同編譯器的運行效果可能有所不同。比如同樣的sizeof(int),在16位編譯器上結果為2,而32位編譯器上就會是4。
4 代碼獲取到的外部數據不同。
比如運行代碼時獲取到的其它輸入不同,包括程序中獲取的環境變數,實時信息,以及各種外部輸入等,均有可能出現不同。
比如在做隨機數時,如果以當前時間設定隨機數種子,由於每次的時間是不同的,同一個程序每次運行的結果都是不同的。
③ c++編譯沒問題,出來的結果怎麼就是一個0,不是我想要的答案啊。。。。
for(int j=0;j!=3;j++);
{
scores[data[i][j]]+=j;
}
for(int n=0;n!=3;n++);後面多了個分號
for(int n=0;n!=3;n++)成了賦值語句,N=3
cout<<scores[n]<<endl;就只輸出一個結果了
因為scores[3]={0,0,0};所以你前面的代碼加來加去就是0
整段代碼輸出就只有個0嘍
④ 一個程序通過了編譯,並且得到了輸出結果,這個結果是否一定正確為什麼
不一定,好比如說你定義了一個有10個元素的數組,然後將另一個有11個元素的數組逐一賦值給它,程序中控制它正確賦值,最後輸出第一個數組各元素的值,但是雖然通過了編譯,也輸出了結果,但是你還是沒能把11個元素的都賦值過去,這就是達不到所想的賦值,當然是不正確的了。還有其他一些情況,當你的編程經歷越多時就會碰到的了
⑤ 請教大家,這個編譯出來,會是什麼結果
應該是正常的編譯,運行後就不是你預期的結果了,short應該是16位的,它所表示的最大的整數是:32767。初學先不必糾結這個。。。。我也是初學,呵呵。
⑥ 關於如何判斷gcc之類的編譯器的編譯結果
我們再使用gcc編譯的時候可以讓他的輸出信息保存到文件當中
gccmain.c-omain&>status.txt
上面的命令就是將gcc編譯的信息保存到status.txt文件中,然後我們再程序中讀取文件,看文件是否有內容,沒有內容就說明沒有報錯和警告,編譯成功。有內容就對每一行內容進行判斷,看是warring還是error,只有warring也代表編譯成功,有error代表編譯失敗,然後把這些報錯信息都列印出來就好了。
下面看一下例子: