這是我以前解決問題時,收集在印象筆記里的內容,為了以後整理方便,把它轉移至這裡。以下內容,均來自微軟官方網站相關。 問題:C++控制台閃回 解決辦法: 1,在程式結尾添加system("pause");[若有return語句則寫在return之前] 解析:system(const char *com ...
這是我以前解決問題時,收集在印象筆記里的內容,為了以後整理方便,把它轉移至這裡。以下內容,均來自微軟官方網站相關。 問題:C++控制台閃回 解決辦法: 1,在程式結尾添加system("pause");[若有return語句則寫在return之前] 解析:system(const char *command); system函數返回給定的命令字元串command進行系統調用。如果命令執行正確通常返回零值。如果command為NULL,system()將嘗試是否有可用的命令解釋器。如果有返回非零值,否則返回零值。 system是執行dos下麵的一些命令,在DOS下能執行的指令,用system都可以執行。把dos的命令直接放到它的參數裡面就可以執行,用戶隨意敲一個鍵後程式繼續運行。 pause 它會提示“請按任意鍵繼續……”,pause命令沒有任何的參數,它的命令就是它的本身,當pause命令運行後,會中斷執行語句。這個中斷不是立即停止,只是暫停,按下任意鍵之後就會繼續執行下麵的語句。而且可以重覆用很多次,在一個批處理命令中,可以嘗試使用多個pause命令。 2,在程式結尾添加get char();[若有return語句則寫在return之前] 解析:get char()函數從STDIN(標準輸入)獲取並返回下一個字元,如果到達文件尾返回EOF。這種方法是直接讓程式運行get char函數,讓程式在接受一個字元後再退出,相當於自己按下任意鍵後程式才退出。 編譯器警告(等級1)C4305 “context”:從"type1"到"type2"的截斷 備註:如果將值轉換為較小類型的初始化或構造函數參數,則會發出此警告,導致信息丟失。 示例 此示例顯示了你可能會看到此警告的兩種方式: // C4305.cpp // Compile by using: cl /EHsc /W4 C4305.cpp struct item { item(float) {} }; int main() { float f = 2.71828; // C4305 'initializing' item i(3.14159); // C4305 'argument' return static_cast<int>(f); } 若要解決此問題,請使用正確類型的值進行初始化,或使用顯式強制轉換為正確的類型。 例如,使用浮點文本(如 2.71828 f),而不是雙精度(浮點文本的預設類型)來初始化浮點變數,或傳遞給採用float參數的構造函數。 編譯器警告(等級2) C4244 "argument":從 "type1" 轉換到 "type2",可能丟失數據 浮點類型已轉換為整數類型。 可能發生了數據丟失。 如果收到 C4244,則應將程式更改為使用相容類型,或向代碼添加一些邏輯,以確保可能值的範圍將始終與你使用的類型相容。 C4244 也可以在第3級和第4級激發;有關詳細信息,請參閱編譯器警告(等級3和4) C4244 。 示例 下麵的示例生成 C4244: C++ // C4244_level2.cpp // compile with: /W2 int f(int x){ return 0; } int main() { double x = 10.1; int i = 10; return (f(x)); // C4244 // try the following line instead // return (f(i)); }