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

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

c - stdint.h と C99

C 標準ライブラリの一部であるC99 標準を読み込みました。stdint.h

C99準拠をテストする場合、次を使用して正しく読みますか?

が利用可能であることを意味stdint.hしますか?

適切な例: 準拠しているふりをしているが、独自の準拠声明と対立することをC99提供していない環境を考えることはできますか?stdint.h

編集:好奇心旺盛な人のために、問題のシステムはHP Cコンパイラを備えたOpenVMSです(openVMSで提供されるgccではありませんstdint.h)。したがって、これまでに受け取った回答とコメントによると、この実装 (C99 のふりをする) はバグがあると見なす必要があります。詳細: https://groups.google.com/forum/#!topic/comp.os.vms/Bnh3tIOc7bo%5B101-125%5D

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

c++ - なぜ誰もが標準の C 型を typedef するのですか?

Qtを使用したい場合はquint8、などを採用する必要がありますquint16

GLibを使用する場合は、welcomeguint8などを使用する必要がありますguint16

Linuxにはなどがありますu32s16

uC/OSは などを定義SINT32UINT16ています。

また、これらを組み合わせて使用​​する必要がある場合は、トラブルに備えたほうがよいでしょう。あなたのマシン上で何度も何度も何度も何度も繰り返し実行u32され、コンパイラは文句を言うからです。typedeflongquint32typedefint

あるとすれば、なぜ誰もがこれを行うの<stdint.h>ですか?これは図書館のある種の伝統ですか?

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

c - uint64_t を左シフトすると、最上位の dword がゼロになります

タイトルはそれを要約しています: uint64_t を左シフトしても期待値が出力されません。その理由を知りたいです。私が得たのは、最上位 4 バイトがゼロになった期待される結果です。Debian Jessie 64bit で x86_64 CPU (Intel i7 3770k) を使用しています。これは、同じ動作を再現するテスト プログラムです。

出力 00defec8ed000000 // expected 00000000ed000000 // obtained

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

c - 標準整数はどのようにコンパイル時に翻訳?

C では、同じソース コードで異なるプロセッサ アーキテクチャをターゲットにすることが一般的 (または少なくとも可能) です。また、プロセッサ アーキテクチャによって整数サイズの定義が異なることもよくあります。コードの移植性を高め、整数サイズの制限を回避するには、C 標準の整数ヘッダーを使用することをお勧めします。ただし、これが実際にどのように実装されているかについては混乱しています。

x86 用に書かれた小さな C プログラムを作成し、それを 8 ビット マイクロコントローラーに移植することにした場合、マイクロコントローラー コンパイラーは 'uint32_t' をネイティブの整数型に変換する方法をどのように認識しますか?

C コンパイラを作成する際にマッピング要件はありますか? コンパイラを C99 互換にする場合、すべての uint32_t をネイティブ型に置き換えるマッピング機能が必要ですか?

ありがとう!

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

c - int 型は sscanf で機能するのに、int16_t は機能しないのはなぜですか?

ユーザー入力ストリームから変数 M と N に値を代入しようとしています。型 int の M と N を指定すると、コードを動作させることができます。ただし、 stdint.h を使用して int16_t として指定すると、最初の値は読み取られますが、最後の値は読み取られません。どうしてこれなの?

ここで、コードは正常に機能しています...

ここでは機能しません。

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

c - 使用しているマシンが C の標準整数データ型をサポートしているかどうかをどのように判断しますか?

私は C の stdint.h の概念にある程度精通しています。整数のサイズを明示的に指定することにより、ヘッダー ファイルは #define 整数をそのマシンの適切な整数に置き換えます。たとえば、マシンに 16 ビットの符号なし整数がある場合、uint32_tは に置き換えられlong unsigned intます。

ただし、あなたのマシンが 32 ビット整数までしかサポートしていないとしましょう。を使用するとどうなりますint64_tか?この整数サイズがネイティブでサポートされていない場合、それを修正できる代替手段がないため、これはどのように解決されますか?

コンパイラは、解決できないと言ってエラーをスローしますか? それとも、2 つの 32 ビット割り当てを使用して 64 ビット データ型を保持しようとしますか?