c 遇到的警告

2021-10-07 13:01:23 字數 1168 閱讀 9735

記錄乙個警告,不知道如何解決,望走過路過的大佬指點一下。

背景:用c++寫了乙個簡單的功能:定義乙個陣列,可以容納5個整數,資料來自使用者的輸入,並返回累加和和均值。

下面是**

#includeusing namespace std;

int main()

} int total = 0;

for (int i = 0; i < item; i++)

double mean = (double)total / item;

cout << "總和:" << total << "均值:" << mean << endl;

return 0;

}

執行結果

說明:因為功能比較簡單,就加入了乙個輸入檢查的功能,驗證一下。

如下圖所示,當我們輸入乙個浮點資料時,會提示資料錯誤,然後重新輸入,然而程式最後還是把浮點資料強制變為整形進行了求和,應該是陣列中已經讀取了這個浮點資料並且轉為了整形,因此沒有清空。那麼清空一下試試。

如下圖所示,在自檢的while迴圈中對i進行處理,也就是當遇到錯誤時,i-1,對當前的值重新輸入

結果如下,可以發現錯誤的資料已被新輸入的資料替代。

但是,回頭再看主程式,發現了一處警告。

百思不得其解,難道說是之前讀取的錯誤資料並未在快取區域清空嗎?又該怎麼處理呢?

還有就是cout列印重新輸入後,為什麼列印出的是第2個而不是第乙個要重新輸入的。

關閉 C4996 警告

在使用vc 2005 的開發者會遇到這樣的問題,在使用std命名空間庫函式的時候,往往會出現類似於下面的警告 warning c4996 strcpy was declared deprecated 出現這樣的警告,是因為vc2005中認為crt中的一組函式如果使用不當,可能會產生 諸如記憶體洩露 ...

指標的警告

指標運算只有作用於陣列中其結果才是可以 的,對任何並非指向陣列元素的指標執行算數運算是非法的 如果乙個指標減去乙個整數後,運算結果產生的指標所指向的位置在第乙個元素之前,那麼它是非法的。1 錯誤地對乙個為初始化的指標變數進行解引用 2 錯誤地對乙個null指標進行解引用 3 向函式錯誤地傳遞null...

總結 程式設計中遇到的vc提示的一些警告

1 c4251 原因 資料成員方在dll匯出類中使用模板類引起的 方法 1 program warning disable 4251 不推薦 2 將該資料成員改為指標方式 ps 記住初始化和釋放 3 將該模板類及其依賴類匯出.eg class declspec dllexport test 這種方法...