A warning - comparison between signed and unsigned integer expressions [-Wsign-compare]
1
vector<int> histogram = Histogram(img);
int total = 0;
for (int i = 0; i != histogram.size(); ++i)
{
total += histogram[i];
}
123456
警告的意思是一個無符號數整型與有符號整型最好不要比較,i是有符號整型,histogram.size()是無符號整型,所以會產生這個警告,
解決方式:
for (unsigned int i = 0; i != histogram.size(); ++i)
最省力的,將i改成unsigned int 就不會產生這個警告了for (std::size_t i = 0; i != histogram.size(); i++)
size_t 型別定義在cstddef.h中,該檔案是C標準庫的頭檔案stddef.h的C++版,它是一個與機器相關的unsigned型別,其大小足以保證存盤記憶體中物件的大小,在用下標訪問元素時,vector使用vector::size_type作為下標型別,而陣列下標的正確型別則是size_t,for (vector::size_type i = 0; i != histogram.size(); ++i)size_type是由string型別別和vector型別別定義的型別,用以保存任意string物件或vector物件的長度,標準庫型別將size_type定義為unsigned型別,
三種解決方式都試過了,解決問題~
著作權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 著作權協議,轉載請附上原文出處鏈接和本宣告,
本文鏈接:http://blog.csdn.net/qq_43792862/article/details/97647454
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/82415.html
標籤:C++
上一篇:Java大神求幫
下一篇:string類查找子串
