Home > C言語 > たまのCはビタミンが足りない

たまのCはビタミンが足りない


void function(std::vector a) { 
    for (int i = 0; i < a.size() - 1; i++) { 
       // 処理  
         yabee(a.at(i)); 
    } 
} 

上のはやばい感じです。
はまりますた。
正しくは多分下。


for (int i = 0; i + 1 < a.size(); i++) { 
    // 処理 
    yabee(a.at(i)); 
} 

a.size()-1はsize()がsize_tなので-1にならない感じです。

キーワード:
C++,unsigned,オーバーフロー

Comments:3

o-taki 07-06-27 (水) 15:23

for ( int  i = 0; …
じゃなくて
for ( size_t   i = 0; …
ってしたらいいんじゃね?

コスミー 07-06-27 (水) 21:20

i < a.size() – 1;
と書いてしまうと、a.size()==0のとき、a.size()-1がsize_tのためおそらく
i < (size_t)(-1)
で、a.size()==0なのにループの中に入る感じです。

o-taki 07-06-28 (木) 11:30

ああ、site_t は unsigned だから -1 にならないということですか。なるほど。
よくわかりました。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://red-treasure.com/report/wp-trackback.php?p=14
Listed below are links to weblogs that reference
たまのCはビタミンが足りない from コスミー報告書[社外秘]

Home > C言語 > たまのCはビタミンが足りない

Search
Feeds
Meta
 合計:018987
 今日:0126 昨日:0157

Return to page top