問題タブ [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 投票する
13 に答える
873256 参照

c - printfを使用してunsignedlonglong intをどのようにフォーマットしますか?

出力:

この予期しない結果は、を印刷した結果だと思いunsigned long long intます。どうprintf()ですかunsigned long long int

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

c - 「long long」とはどのようなデータ型ですか?

このタイプは知りません。それはすべての中で最大のものですか?整数型だと思いますよね?それとも浮動小数点ですか?倍より大きい?

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

gcc - -pedantic を GCC コマンドラインに追加することは可能ですか?

私は主に GCC を使用してライブラリを開発していますが、クロスコンパイラの互換性と、特に標準への準拠を可能な限り確保したいと考えています。このために、-W...コマンド ラインにいくつかのフラグを追加しました。も追加しますが、タイプ-pedanticに関する警告に問題があります。long long後者は私のライブラリにとって重要であり、#ifコードで適切に保護されています。つまり、それを知らないコンパイラではコンパイルされません。

要するに、GCCモードで、拡張子以外-pedanticの拡張について警告することはできますか? long long

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

c - long long と int の乗算

次のスニペットがあるとします。

MinGW GCC 3.4.5 での出力は (-O0) です。

最初の乗算は、(アセンブラーの出力に従って) 内部で int32 にキャストされます。2 番目の乗算はキャストされません。プログラムが IA32 で実行されていたために結果が異なるのか、それとも C 標準のどこかで定義されているために結果が異なるのかはわかりません。それにもかかわらず、この正確な動作がどこか (ISO/IEC 9899?) で定義されているかどうかに興味があります。手動でキャストする必要がある理由とタイミングをよりよく理解したいからです (別のアーキテクチャからプログラムを移植する際に問題があります)。

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

c++ - longlong値を返す

出力は734294471です。呼び出しを番号に置き換えるとtest()、出力は期待どおりになります。デバッガーを使用してxの値を確認しましたが、関数によって返される値に設定されていませんでした。何が問題になっていますか?

VisualStudio2010をVisualC++コンパイラで使用しています。

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

c++ - unsigned_int64のsprintf

私は次のコードを持っています。sprintfの2番目の%dの出力は、常にゼロとして表示されます。間違った指定子を指定していると思います。誰かが正しい値で文字列を書くのを手伝ってくれますか?そして、これはposix標準で達成する必要があります。入力ありがとうございます

出力:

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

gcc - ロングロングへのキャスト(GCC)

これは機能しません。正しい方法は何ですか?

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

c++ - 8 バイト ワードの上位 4 バイトを取得する

掛けて0x1d400 * 0xE070381Dいます。

電卓でこれを行うと、結果は0x00019A4D26950400

これをcppで実装しようとしたとき、これが私が持っているものです。

このコードの結果はd = 0x26950400. これは下位 4 バイトだけです。他はどうなりましたか?

上位 4 バイトを分離0x00019A4Dして別の変数に保存しようとしています。これはどのように行うことができますか?

乗算で 8 バイトすべてを表示できた場合、上位 4 バイトを分離するために考えていたことは次のとおりです。

これは機能しますか?

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

c++ - 64 ビット環境での長い移植問題へのポインタ変換

アプリケーションを 32 ビットから 64 ビットに移植しています。
C++ですが、Cスタイルコーディング(レガシー品)です。値を格納するためにユニオンと構造体の組み合わせが使用されているという問題があります。ここでは、任意の基本データ型のデータを保持する「Any」というカスタム データ型が使用されます。Any の実装は次のとおりです。

ユニオンのサイズは 8 バイトです。彼らはユニオンを使用して、特定の時点で値が 1 つだけになるようにし、構造体を使用して型を区別しました。double、long、string、char、float、および int の値をいつでも格納できます。それがアイデアです。double 値の場合、値は any_double に格納されます。他のタイプの場合は「データ」に保存され、値のタイプは「id」に保存されます。「記号」は、値「Any」が double または別の型を保持しているかどうかを示します。any_any はコード内で自由に使用され、型に関係なくアドレス空間に値をコピーします。(ある時点で何が保持されるかわからないため、これが最大の問題です!)

その文字列またはポインタ「Any」が保持されると想定される場合、それは「data」(long 型) に格納されます。64 ビットでは、ここに問題があります。ポインタは 8 バイトです。そのため、"long" を同等の 8 バイト (long long) に変更する必要があります。しかし、そうすると共用体のサイズが 16 バイトに増加し、「any_any」を自由に使用すると問題が発生します。「any_any」の使用法が多すぎて、何を保持できるかわかりません。

私はすでにこれらの手順を試しましたが、うまくいきませんでした:
1. 構造体で「長いデータ」を「長い長いデータ」に変更しました。- これにより、データを「any_any」(8 バイト) として渡すことはできなくなります。
2. 構造体を共用体内のポインターとして宣言しました。そして、構造体内の「長いデータ」を「長い長いデータ」に変更しました。- ここで発生した問題は、構造体にメモリを割り当てる必要があるポインターであるためです。「any_any」を自由に使用すると、メモリの割り当てが難しくなります。場合によっては、メモリを上書きして値を消去することがあります。
3. 「データ」の値 (キーと値のペア) を保持する別のコレクションを作成します。- この実装はアプリケーションの中核であるため、これは機能しません。コレクションは数百万のデータに実行されます。

誰でもこれで私を助けることができますか?

0 投票する
6 に答える
22930 参照

c - Cコンパイラがlongを32ビットに、long longを64ビットに指定するのはなぜですか?

長い64ビットを作成し、128ビットの数値が現実になるまで長く予約する方が理にかなっているのではないでしょうか。