[解決済み] 4294967295(32bitでの最高値)はなぜ-1になるのですか?
2022-01-29 12:34:01
質問
私のコードには、次のような単純な部分があります。
int pch = name.find("#");
if(pch == name.npos) continue;
の場合
name.find
が見つかりません。
"#"
,
pch
は-1に等しい。
name.npos
ではなく、印刷すると4294967295となります。なぜかというと、この場合
pch
が-1であり
name.npos
は
4294967295
に入ると、プログラムは
if
の条件ですか?
解決方法は?
-
string::npos
は、その位置が見つからないことを表す。通常、定数値で表される-1
.
この定数は-1で定義されています。size_tは符号なし整数型なので、この型で表現可能な最大の値です。
-
場合によっては
find
が失敗した場合は-1
.
つまり、どちらも同じで、あなたの場合、そして
if
が満たされます。
さて、答え合わせをすると
name.npos
ではなく、印刷すると4294967295となります。
というのも
string::npos
は、型
size_t
であり、通常は
typedef
から
unsigned
の型があります。は、その
-1
を初期化するために使用されます。
unsigned
として格納され、印刷されます。
符号なし値の最大値
.
関連
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] 仮想デストラクタはいつ使うのか?
-
[解決済み] template "と "typename "キーワードはどこに、なぜ入れなければならないのですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】'cout'は型名ではない
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された