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

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

c++ - "long long" の結果を持つ C++ の "Int" 乗算

の二乗を求めようとしていますint。私のコードは以下のようになります:

結果はだったはずですが6049417284 、出力を確認すると1754449988. 私がしている間違いは何ですか? long long結果を保存できるはずですが、なぜ別の値が得られるのでしょうか?

0 投票する
0 に答える
2052 参照

c - LP64/ILP64/LLP64 データ モデルで 64 ビット タイプとして「long」と「long long」のどちらを選択しますか?

longまたはを使用して、組み込みの 64 ビット データ型を選択するための要件を理解しようとしていますlong longlong型の等価性とvsのアラインメント要件を理解するのに苦労していますlong long

longLP64/ ILP64 long long/LLP64 データ モデルで 64 ビット タイプとして選択する場合のベスト プラクティスまたは基準は何ですか?


関連する質問をいくつか紹介します。などの他のトピックを完全にカバーsizeof(long) <= sizeof(long long)していますが、同等性やアライメントの期待についてはまったく扱っていません。また、 などの非組み込み型にも大きく依存していuint64_tます。


背景情報は、使用する組み込みの 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 エラーを修正するため)、コンパイル エラーが発生します。


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

c - 長い長い C マクロを Swift にブリッジする方法は?

Foundation にはNSURLResponseUnknownLength、次のように定義されたC マクロがありlong longます。

マクロが Swift にブリッジされる方法により、この定数は Objective-C アプリケーションではアクセスできますが、Swift アプリケーションではアクセスできません。これらのようなマクロを Swift に表示するにはどうすればよいですか?

ブリッジヘッダーのグローバル C 関数でマクロをラップしようとしました。

ただし、アクセスするgetNSURLResponseUnknownLength()Undefined symbols for architectureビルドエラーが発生します。

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

c++ - 私のマシンで sizeof(long) == sizeof(long long) の場合、なぜそれらは同じ型ではないのですか?

私が実行した場合:

私のマシン(およびColiru)で、次のようになります

それだけではありませんstd::is_same<>。すべてが同じマシン上で発生しているにもかかわらず、別の翻訳単位でのみコンパイルしたため、int64_t失敗のインスタンス化を期待している翻訳単位。intlong long int

これらのタイプが同じではないのはなぜですか? typedefつまり、あなたが同じタイプのから持っているような行動を示すということですか?

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

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とは異なると考えていますか? 彼らが下位互換性を気にしている場合、これがどのように起こるか想像できません...

ありがとうございました