問題タブ [stdint]
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 - stdint.h と inttypes.h の違い
stdint.h と inttypes.h の違いは何ですか?
それらのいずれも使用されていない場合、 uint64_t は認識されませんが、どちらでも定義された型です。
c - stdint.h にあるこの謎のマクロ プラス記号は何ですか?
私のコードを見てください:
のマクロ定義<stdint.h>
は次のとおりです。
このプラス記号の意味または重要性は何ですか?
c++ - ビットフィールドとstdintの定義
だから私はC++でプログラミングしていて、私が知る限り、stdint.hに相当するC++はありません。stdintのコピーを取得して含めることができるので、これは問題ありません...しかし、私の質問は基本的にこれです、
これら2つのコードの違いは何ですか?
と
ビットフィールドの明らかな制限以外に、パフォーマンス/移植性の問題はありますか?どちらが好ましいですか?
c - Cでint64_t型を出力する方法
C99標準には、int64_tのようなバイトサイズの整数型があります。私は%I64d
現在、次のようなWindowsの形式(またはunsigned %I64u
)を使用しています。
そして私はこのコンパイラの警告を受け取ります:
私は試してみました:
しかし、私は同じ警告を受け取ります。私はこのコンパイラを使用しています:
警告なしにmy_int変数を出力するには、どの形式を使用する必要がありますか?
c - Cで16ビット整数を定義する
16ビットサイズの整数をCで宣言する必要があります。
shortとintのサイズはマシンに依存することを私は知っています。
使ってみまし"stdint.h",
たが、単純に使っているようです
だから私の質問は:
私は何かが足りず、短いタイプは16ビット長を保証しますか?
いいえの場合、それを保証する代替手段はありますか?
c - stdint を使用する (または使用しない) 理由
stdint
プラットフォーム間の移植性のために特定の変数サイズが必要な場合に使用されることは既に知っています。今のところそのような問題はありませんが、上記の事実以外に、それを使用することの長所と短所は何ですか?
これをstackoverflowおよび他のサイトで探していると、テーマについて扱う2つのリンクが見つかりました。
codealias.info - stdint の移植性について説明しています。
stackoverflow - これはuint8_tについてより具体的です。
この 2 つのリンクは、このヘッダーの主な理由である移植性について詳しく知りたい場合に特に役立ちます。しかし、私にとって最も気に入っているのは、 (たとえば、RBG チャネル値を格納するための)uint8_t
よりもクリーンであると思うこと、単純に より意味のあるように見えることなどです。unsigned char
int32_t
int
stdint
それで、私の質問は、移植性以外に使用することの長所と短所は正確には何ですか? コードの特定の部分でのみ使用する必要がありますか、それともどこでも使用する必要がありますか? どこにでもある場合atoi()
、strtok()
、 などの関数を使用するにはどうすればよいですか?
ありがとう!
c - C:gccでのuint16_t減算動作
2つのunsignedintを減算し、その結果をsigned int(またはリテラル)と比較しようとしています。unsigned int
タイプを使用する場合、動作は期待どおりです。uint16_t
(from )型を使用する場合stdint.h
、動作は私が期待するものではありません。比較はgcc4.5を使用して行われました。
次のコードが与えられます:
出力は0で、これは私が期待したものです。aとbはどちらも符号なしであり、bはaより大きいため、結果は10より大きい大きな符号なしの数値になります。aとbをuint16_tと入力すると、次のようになります。
出力は1です。これはなぜですか?2つのuint16_tタイプ間の減算の結果は、gccのintに格納されていますか?をに変更する10
と10U
、出力は再び0になります。これは、これをサポートしているようです(減算結果がintとして格納され、符号なしintと比較される場合、減算結果は符号なしintに変換されます)。
c - ベストプラクティス:ヘッダーファイルでのstdintタイプの使用
stdint.h
そのヘッダーの型を使用するヘッダーにそれが含まれていることを確認するための最良の方法は何ですか?
私が見ることができる選択肢は次のとおりです。
stdint.h
ヘッダー自体に含める(危険ですよね?)#ifndef _STDINT_H
ヘッダーを解析するときに含まれていない場合は、コンパイラーにフラグを立てます(付随するもののようなもの)#error "stdint.h not included"
stdint.h
コメント、会話、ドキュメント、または3つすべての組み合わせ(最後のものが望ましい)のいずれかを使用して、それを必要とするヘッダーの前に常に含めるように他の開発者を教育します。
言及する価値のある他の選択肢がある場合は、遠慮なくそうしてください-私はここで何をすべきかを推測しています。
c++ - stdint.h が見つかるのに cstdint が見つからないのはなぜですか?
include stdint.h は機能しますが、cstdint は含まれません。
g++ と同じです:
どういうことなんですか?そして、この問題を修正する方法はありますが、コンパイラを更新していますか? ありがとうございました。
c - stdint.hのdoubleに相当しますか?
私はc89を通り抜けようとしていますが、今はこの問題に悩まされています。stdint.h
doubleデータ型に相当するものはありますか?はいの場合、どのように印刷しますか?