導航:首頁 > 源碼編譯 > 為什麼會編譯成功而調試失敗

為什麼會編譯成功而調試失敗

發布時間:2022-10-10 02:46:27

1. 為什麼編譯沒錯但是調試按enter沒反應,程序錯在哪啊

最主要的問題在sum+=1/(n+1)這一句。因為算式右邊是整數運算,所以結果永遠為0,sum的值不變。改成sum+=1.0/(n+1)即可,右邊會進行隱式轉換。
還有printf("%d
card(s)\n",n)這句後面還應該跟一句break,否則因為m的值不變,一旦進入while(m>0.0)循環,將無法終止,成為
死循環
,不停列印card。
要讓scanf接受EOF,可輸入CTRL+Z。

2. c語言編程,編譯成功,但是調試失敗~!!怎麼回事。。求助~~

樓主你好!
你是不是發現編譯沒有報錯!但是一旦運行就會進入異常而中斷報錯!
我通過調試發現是棧溢出而造成的異常中斷!
這個問題還得從你的 float x[60000][15] 說起。且不算後面定義的變數,通過計算我們知道大概將近3.6M左右!
這個設計到程序的堆棧問題!不知道你是否了解程序的反匯編,簡單的說,每個程序都有自己的棧,你定義的局部變數就在這個棧上!而這個棧不是無限的大的,在Windows下,棧是向低地址擴展的數據結構,是一塊連續的內存的區域。這句話的意思是棧頂的地址和棧的最大容量是系統預先規定好的,在WINDOWS下,棧的大小是2M,如果申請的空間超過棧的剩餘空間時,將提示overflow!具體可以去了解一下程序的反匯編!
因此,你代碼本身沒有錯誤,但是運行不起來是棧溢出了!
如果,你還是想要分配60000個15個成員float類型的數值,那你就得使用malloc來申請空間,malloc申請的空間是在堆上的,malloc函數你自己可以去了解,這個跟棧是不一樣的,有興趣可以去了解堆和棧的區別!
以上是我的看法,希望我的回答對你有幫助!

3. 【快來幫我~~】為什麼我的C語言程序可以編譯等都通過 但是運行起來之後就出現調試 不能運行呢

1. 「MGraph G;」沒有初始化。
建議做一下修改:
void InitGraph(MGraph& G)//創建一個函數用來生成G圖
{
int i,j;
G.vexnum=4;
...// 其他同,把" return G;"去掉。

void ShortestPath()
{
MGraph G;
... // 其他同
scanf("%d",&v);

InitGraph(G); // 加上這一句
...

2. 「for(v=0;v<G.vexnum;++v)」, v保存著輸入的值,但這里又重新賦值為0.
是不是應該是「for(v0=0;v0<G.vexnum;++v0)」?

4. C語言編譯成功但生成失敗,先前明明可執行,一下子就有錯誤了

1編譯階段,執行的是對單個文件的轉換,從源代碼轉換成二進制文件。2鏈接階段,將每個源文件轉成的二進制文件,及相關的系統庫文件共同打包生成可執行文件。3從定義上可以看出,鏈接階段,出現錯誤有兩種可能:1)函數中引用了不存在的函數。2)編譯環境有問題,導致ld出錯。

5. VC++程序編譯時能正常運行,但是在Debug中運行生成的可執行文件卻出錯,是什麼原因

在VC++,裡面會生成兩種不同的文件包 一種是release,另一種就是debug,前者是正式發行版,在編譯鏈接的過程中,它會對代碼進行優化和一些相應的處理,而後者則是調試版,你在VC編譯生成的文件一般就是debug版本,不然它是不會在你的文件夾中生成debug文件夾的,所以,你在文件夾中執行文件出問題,有一種可能就是誤刪了文件夾下的文件,還有,你的出錯是指什麼錯誤,是程序崩潰嗎?

6. 程序編譯過了,但是無法運行出結果是怎麼回事

編譯過了沒錯誤,說明你的代碼語法沒錯誤。運行結果不對,是你的代碼邏輯有問題,仔細檢查代碼邏輯流程是不是不對,調試調試。

7. C語言程序問題,編譯成功可卻不能運行,這是為什麼

編譯,只檢查各函數內部的語法是否有錯誤。
連接,除了做編譯要做的檢查以外,還要檢查各函數的調用是否正確。
樓主這情況,最常見的就是哪個函數名敲錯了,從頭到尾只檢查函數名的拼寫是否正確

8. 運行VS2010, 編譯的時候是生成成功的,但是啟動調試就生成失敗了,求c++大神搭救

link error 表示鏈接錯誤, 很有可能你調用函數時該函數或沒聲明沒定義或定義沒聲明或聲明沒定義或調用的地方落後於函數聲明地方.

其中 我說言聲明函數(如int search(char c)像這樣
// some codes like #include ....
int search(char c); // 注意沒有花括弧{} 即不是定義
我說的定義即是函數體(函數的實現) 在c++中函數聲明和函數實現可以分開 (java中聲明了即馬上實現,除非抽象函數(C++中的純虛函數)或介面中的函數(其實介面中的函數就是抽象函數))
int search(char c){
// code here 在這里寫實現
}
常見問題,main函數調用search函數,但是你卻沒在main()之前聲明他而是在main之後實現了他,故找不到search函數

閱讀全文

與為什麼會編譯成功而調試失敗相關的資料

熱點內容
單片機有4個8位的io口 瀏覽:895
win10rar解壓縮軟體 瀏覽:164
plc教程pdf 瀏覽:665
pythonshell清屏命令 瀏覽:278
檢測到加密狗注冊伺服器失敗 瀏覽:203
解壓後手機如何安裝 瀏覽:518
極客學院app為什麼下架 瀏覽:13
圖片批量壓縮綠色版 瀏覽:651
東北程序員帥哥 瀏覽:707
加密封條風噪小 瀏覽:974
安陽少兒編程市場 瀏覽:499
雲伺服器建設原理 瀏覽:259
javajunit4for 瀏覽:847
華為伺服器如何進陣列卡配置 瀏覽:435
apache伺服器ip地址訪問 瀏覽:720
如何買到安卓手機預裝軟體 瀏覽:537
冤罪百度雲不要壓縮 瀏覽:89
蘇州雲存儲伺服器 瀏覽:178
解壓收納原聲 瀏覽:387
java注冊驗證 瀏覽:377