問題タブ [size-t]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - size_t のサイズは常に void のサイズと同じです *
のサイズはsize_t
常に のサイズと同じvoid *
ですか?
または、一部のプラットフォーム/コンパイラにはいくつかの例外がありますか?
c - 符号なし変数をアンダーフローしてからオーバーフローするのは悪いことですか?
クラア。
私はプログラミング学校の学生で、25 行未満のコードで C 関数を作成する必要があります。したがって、基本的に、すべての行が重要です。時々、次のように割り当てを短縮する必要があります。
このコードの重要な部分は、size_t
という名前のカウンターi
です。数行のコードを節約するために、ループの条件で事前にインクリメントしたいと思います。しかし、C 標準size_t
が unsigned 型として定義している限り、私がここで基本的に行っていることは、i
変数を (0 から非常に大きな値に) アンダーフローさせてから (その大きな値から 0 に) 1 回オーバーフローさせることです。
私の質問は次のとおりです。コードを短くしなければならないという悪い慣行に関係なく、 ( ) 変数を -1 に設定し、反復ごとに事前にインクリメントして配列を参照することは安全ですか?unsigned
size_t
ありがとう!
c - malloc と size_t が一致していないようです
私が使うとき
malloc
のようにfsize * sizeof(size_t)
大きなスペースを割り当てる必要があるため、私は本当に疑問に思っていますが、のようにアクセスしようとするbuf + 8*fsize
と、範囲外になります。
ただし、buf+fsize
は正しい場所、ファイルの終わりにあり、アドレスを計算したところです。malloc のように、私にはfsize * sizeof(char)
大きなスペースが返されます。
だから、どこが間違っているのか、どんな助けも感謝しています。
c++ - size_t の奇妙なループ
を使用してループには入りませんsize_t
。なんで?使用するint
と、ループに入り、出力は次のようになります。11, 11
c - size_t 0x1<<31 は size_t 0x1<<30 よりもはるかに大きい
size_t
私が気づいたいくつかの動作に混乱しています:
結果:
今、私はそれsize_t
が最低でも16ビットの符号なし整数であることが保証されていることを理解していますが、なぜ0x1<<31
それがした値になるのか理解できません.
x86_64 で LLVM を使用しています。
c - -1 を size_t にキャストしてループがスタックすることについて
グラスドアのインタビューの質問は次のとおりです。私の知識では、そこから何かを推測することは困難です。適切な質問は何ですか?
size_t 数値を計算するマクロ。ループに入ると、-1 が size_t の数値にキャストされ、ループを開始できなくなります。
Michael Aaron Safyan が示唆するように、次のようになります。
逆に動作します:
for (size_t i = 0; i > ((size_t) -1); i--) {}
説明については、答えを参照してください
c++ - size_t を double または int C++ にキャストする方法
私の質問はそれです
size_t データがありますが、今は double または int に変換したいと考えています。
私が何かをするなら
コンパイラは警告を報告します。オーバーフローする可能性があるためです。
ブーストのような方法や、変換を行う他の方法はありますか?
foreach - タイプが指定されていても、dmdはタイプを推測できません
ここで、size_t の 2 つの配列に対してロックステップ反復処理を行いたい
しかし、これはコンパイルに失敗します
ただし、 foreach 行を size_t の代わりに uint を使用するように変更すると (私は 32 ビットのラップトップを使用しています)
コンパイルして問題なく動作します。どうしたの?