size_tは環境によって定義が変わるという話おおたの物置size_tは環境によって定義が変わるという話2014-11-08cppTweetsize_tが何bitになるかは環境によって定義が異なります。そのため、以下のコードは多くの32bit下で上手くいきますが、64bit化などで環境が変わると動かなくなります。0;}std::stringのfindは引数の文字列が最初に出てくる位置か、見つからなかった場合にstd::string::nposを返します。この時、戻り値の型はsize_tになります。intの別名として定義される事が多いため、上記のコードは問題なく動きます。int(4bit)で表せない範囲の値だった場合はデータが一部消滅します。std::string::nposは-1として定義されており、unsignedとして解釈した場合にはその値の最大値になります。intの場合、両者は同じ大きさのため特に意識する必要はありません。intでは表せないため、データが消滅し、結果として比較に失敗するという事が起きます。textの4294967295文字目にアクセスして異常終了します。longと比較した際に最大値に変換されるため、上手くいってしまいます。いえ、安全性を求めるならば、出来るだけsize_tはsize_tとして扱うようにした方がいいと思います。ota42yC++/Ruby/RoR/golang/rust/flutter。