問題タブ [long-long]
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++ - "long long" の結果を持つ C++ の "Int" 乗算
の二乗を求めようとしていますint
。私のコードは以下のようになります:
結果はだったはずですが6049417284
、出力を確認すると1754449988
. 私がしている間違いは何ですか?
long long
結果を保存できるはずですが、なぜ別の値が得られるのでしょうか?
c - LP64/ILP64/LLP64 データ モデルで 64 ビット タイプとして「long」と「long long」のどちらを選択しますか?
long
またはを使用して、組み込みの 64 ビット データ型を選択するための要件を理解しようとしていますlong long
。long
型の等価性とvsのアラインメント要件を理解するのに苦労していますlong long
。
long
LP64/ ILP64 long long
/LLP64 データ モデルで 64 ビット タイプとして選択する場合のベスト プラクティスまたは基準は何ですか?
関連する質問をいくつか紹介します。などの他のトピックを完全にカバーsizeof(long) <= sizeof(long long)
していますが、同等性やアライメントの期待についてはまったく扱っていません。また、 などの非組み込み型にも大きく依存していuint64_t
ます。
- UNIX システム - 64 ビットとデータ サイズの中立性
- c/c++ の unsigned long/long/int の違いは何ですか?
- 64 ビットでは long または long long を使用することをお勧めします
- 64 ビット データ モデルでの 64 ビット符号なし整数リテラルの指定
背景情報は、使用する組み込みの 64 ビット型を選択するための次のようなコードです。
i686 および ARMv7 以下は、 を使用しても問題ありませんtypedef my_u64 unsigned long long
。
最初の問題ケース
x86_64 (AMD64) マシンでが有効な場合 typedef my_u64 unsigned long
( が原因でLP64
)、コンパイル エラーが発生します。
2番目の問題ケース
Aarch64 (ARM64) マシンでが有効な場合 typedef my_u64 unsigned long long
(x86_64 エラーを修正するため)、コンパイル エラーが発生します。
c - 長い長い C マクロを Swift にブリッジする方法は?
Foundation にはNSURLResponseUnknownLength
、次のように定義されたC マクロがありlong long
ます。
マクロが Swift にブリッジされる方法により、この定数は Objective-C アプリケーションではアクセスできますが、Swift アプリケーションではアクセスできません。これらのようなマクロを Swift に表示するにはどうすればよいですか?
ブリッジヘッダーのグローバル C 関数でマクロをラップしようとしました。
ただし、アクセスするgetNSURLResponseUnknownLength()
とUndefined symbols for architecture
ビルドエラーが発生します。
c++ - 私のマシンで sizeof(long) == sizeof(long long) の場合、なぜそれらは同じ型ではないのですか?
私が実行した場合:
私のマシン(およびColiru)で、次のようになります:
それだけではありませんstd::is_same<>
。すべてが同じマシン上で発生しているにもかかわらず、別の翻訳単位でのみコンパイルしたため、int64_t
失敗のインスタンス化を期待している翻訳単位。int
long long int
これらのタイプが同じではないのはなぜですか? typedef
つまり、あなたが同じタイプのから持っているような行動を示すということですか?
c++ - Visual Studio は __int64 の "%lld" 書式指定子を公式にサポートしていますか?
このドキュメント https://msdn.microsoft.com/en-us/library/tcxf1dw6(v=vs.140).aspxによると、プログラマーは%lldで f long long 変数を、 %I64d で__int64変数を出力する必要があります。
そして、このドキュメントhttps://msdn.microsoft.com/en-us/library/s3f49ktz.aspxによると、 __int64はlong longの別の名前です。
では、最初のドキュメントで%lldを__int64にも使用できるとだけ述べていないのはなぜでしょうか? VS チームは、将来__int64がlong longとは異なると考えていますか? 彼らが下位互換性を気にしている場合、これがどのように起こるか想像できません...
ありがとうございました