問題タブ [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.

0 投票する
1 に答える
1236 参照

c++ - タイプパラメータとして「size_t」、キャスト警告は再現されません

私はいくつかの古いコード(現在32ビットビルドで動作しているMSVC 2005を使用する必要があります)の警告を取り除くことを試みてきましたが、変換警告を取り除くのにsize_t苦労unsigned intしています。成長するアレイの独自のArray<T> 実装があり、

template<typename I> const T& at(const I i) const {return atImpl(i);}

方法。と呼ばれるとき

size_t i = 10; myArray.at(i);

conversion from 'size_t' to 'const unsigned int', possible loss of data警告が表示されます。動作理論は、であるとI理解されておりunsigned int、これにより、コンパイラはに渡すときにをキャスト/変換しsize_tます(これは不便ですが許容できます)。ただし、最小限の作業例(この投稿の下部)でも、より複雑な最小限の例でも、この警告を再現することはできませんでした。パラメータをキャストするだけで警告が消え、私たちのニーズには十分です(契約により、数はに収まります)unsigned intiatunsigned intunsigned int

  1. Iそのような呼び出しに参加することについての私の理解はunsigned int正しいですか(specは「typedef-nameは別のタイプの同義語です。typedef-nameは新しいタイプを導入しません」とtypeid(size_t(1)).name()言ってunsigned int おり、フィードされているようです)size_ttypedef言い換えれば、最小限の例で警告を出すべきかどうか。私の知る限り、ビルド構成は同じです。
  2. 私たちのコードは警告を出しますが、最小限の例はそうではないので、私が見落としているに違いないことがあります。あらゆる努力にもかかわらず、私は何を理解することができません。アイデア?

ありがとう

最小限の例:

0 投票する
3 に答える
2034 参照

c - C 標準に従って 65535 バイト以上を割り当てることはできますか?

malloc以下のように定義します。

http://pubs.opengroup.org/onlinepubs/009695399/functions/malloc.html


size_t定義 (stddef.h):

size_t: Unsigned integer type of the result of the sizeof operator. http://pubs.opengroup.org/onlinepubs/009604499/basedefs/stddef.h.html


ただし、このページによると、最大制限size_tは 65535 です。 (セクション 他の整数型の制限):

size_t の制限: SIZE_MAX 65535 http://pubs.opengroup.org/onlinepubs/007904975/basedefs/stdint.h.html


C標準を尊重したい場合、65535バイトを超える割り当てができないということですか?

0 投票する
4 に答える
10564 参照

c++ - size_t が署名されていないのはなぜですか?

Bjarne Stroustrup は The C++ Programming Language に次のように書いています。

符号なし整数型は、ストレージをビット配列として扱う用途に最適です。int の代わりに unsigned を使用して、正の整数を表すビットをもう 1 つ取得することは、ほとんど良い考えではありません。符号なしの変数を宣言することによって一部の値が正であることを保証しようとする試みは、通常、暗黙の変換規則によって無効になります。

size_tは、「正の整数を表すためにもう 1 ビット取得するため」に符号なしのようです。これは間違い (またはトレードオフ) でしたか? もしそうなら、自分のコードでの使用を最小限に抑える必要がありますか?

Scott Meyers による別の関連記事はこちらです。要約すると、彼は、値が常に正であるかどうかに関係なく、インターフェイスで unsigned を使用しないことを推奨しています。つまり、負の値が意味をなさない場合でも、必ずしも unsigned を使用する必要はありません。

0 投票する
2 に答える
12810 参照

ubuntu - CUDA 2.1「エラー:不明なタイプ名'size_t'」

システム:Ubuntu 11.10 x86_64 CUDA:v 2.1

matrixMulのようなサンプルプログラムを作成しようとすると、大量のエラーが発生します。そのほとんどは「不明な型名'size_t'」です。PATHに/usr/ local / cuda / binを配置し、/ etc/ld.so.conf.dの.confに/usr/ local / cuda/libを配置するようにしました。

これらのエラーが発生する理由はありますか?

ありがとう!

0 投票する
2 に答える
1162 参照

c - llvmのsize_tに相当するものがあります

malloc strlenのような一部のシステムライブラリは、パラメータとしてsize_tを必要とするか返します。

  • これらの機能と対話するためのLLVMIRの正しい選択は何ですか?
  • 選択はコンパイラのタスクですか?
  • LLVM IRにはsize_tタイプがありますか?
0 投票する
2 に答える
8616 参照

c - c printf size_t

私のコードはコンパイルされますが、printf何も表示されませんか?

のフォーマッタ部分を取り出すと、printf問題なく動作します。

0 投票する
2 に答える
187 参照

c++ - size_tの差を使用して文字列の一部をコピーする

文字列を反復処理し、初期キー値と情報チャンクの終わりを識別するキー値に基づいて情報チャンクをコピーしようとしています。ただし、初期値と最終値を減算して、探しているチャンクの長さを見つけようとすると、一見任意の値を受け取ります。

したがって、開始と終了のインデックスは次のように検出されます。

次に、次のようなことをしようとしています。

しかし、これは私が望む結果を私に与えていません。これが私のコードからの抜粋とそれが生み出す出力です。

出力:25 59 56

つまり、キャプチャしようとしている情報のチャンクは3文字にまたがっていますが、2文字を引くと、25文字になります。なぜこれが発生するのか、どのように回避できるのか、誰かに説明してもらえますか?

0 投票する
2 に答える
2436 参照

c - 低および高 DWORD => size_t

プログラミング言語: C

低と高の 2 つの DWORD があります。両方を size_t 型の 1 つの変数に変換したいと考えています。次のコードがあります。

その通りですか?最初のコマンドはおそらく上位バイトを間違った位置に格納するので、そうではないと思いますよね? これを行う方法について私を助けてください。ありがとうございました :)

0 投票する
1 に答える
156 参照

size-t - size_t符号の喪失(return)(intからunsigned int))

このプログラムは、サブトラカ警告メッセージによって文字列の長さをカウントします

-\

stringLength関数がsize_tを返します。これは、フォーマット指定子に誤りがありますか、それとも値を返す方法ですか?