問題タブ [format-specifiers]
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 - u_char (*)[10] & char (*)[10] C の書式指定子
フォーマット指定子のコンパイル エラーが多数ある既存の C ファイルを修正する必要があります。次の場合、誰でも正しいフォーマット指定子を教えてもらえますか:
u_char(*) [10]
(%s を試しましたが、うまくいきませんでした)char(*) [10]
(%s と %c を試しましたが、うまくいきませんでした)
ありがとう。
c - Cのフォーマット指定子-%s内の%s
私はこのようなものを持っています
出力は次のようになるとMy name is Tom
思いますが、My name is %s
キャラクターをエスケープしてみました%
が、うまくいきません。
ここで何が問題になっていますか?どうすれば%s
内部を手に入れることができ%s
ますか?
c - 浮動小数点変数を 16 進整数として表示すると、隣接する整数が台無しになります
私はこの簡単なプログラムを持っています
私は出力が
でもわかる
なぜめちゃくちゃになる価値があるのa
ですか?はその%X
引数signed int
をb
a
0x120
c - Typedef と printf フォーマット指定子
typedef の一般的な使用法は、変数の「型」を有効にして、変数の背後にあるストレージ構造を再定義することなく、変数の目的をより適切に伝えることです。
ただし、変数のクラスのストレージ構造を一度に変更する方法として、typedef も見ています。
たとえば、私が定義した場合
printf / scanf の場合を除いてmy_offset_t
、コードベースを oruint32_t
からchar
orに切り替えるのはuint64_t
、1行を変更して再コンパイルするのと同じくらい簡単です(sizeof
ハードコードされたサイズではなく、使用したと仮定します)。
printf
/ scanf
、if-elses、またはifdefsの周りのラッパー関数なしで、タイプに応じてフォーマット指定子を簡単な方法で交換する方法はありますか?
ありがとう!
興味のある人のために、私は 16 ビット オフセットを使用して 32 ビット オフセットで動作する LKM を変更していますが、必要に応じて最小限の変更で 64 ビット (または他の何か!) オフセットに移行できるようにしたいと考えています。
c++ - 0.0、1.0、0.025 を出力する C/C++ 単一フォーマット指定子
0.0、1.0、0.025 を出力するために使用できる単一のフォーマット文字列はどれですか? 例えば与えられた:
望ましい出力:
代わりに次を取得します。
さまざまな幅指定子と %f と %g を試しましたが、必要なものが得られません。
C++ の代替手段があれば問題ありません。
c - 奇妙なCのfprintf形式の表記
このコードに気付いたときに、関数のスタック破損エラーを把握しようとしています。
私が求めているのはこの行についてです"\n%s %3c %12s %2c %12s %2c %12s %2c %12s %2c" "%12s %2c %12s"
。2つのフォーマットがこのように続くのを見たことがないので、これがどのようにコンパイルされるのかさえわかりません。助けてくれてありがとう。
c - printfのパラメーターの数が間違っていると、奇妙な結果になります
Turbo Cコンパイラを使用すると、出力は次のようになります。
誰かがこれがなぜであるか説明できますか?
c - gcc-Wformatがunsignedintのprintf%dについて警告しないのはなぜですか?
次のプログラムの動作は未定義です。
C99 7.19.6.1p8は、%dがint引数を期待していると述べています。
C99 7.19.6.1p9には、「引数が対応する変換仕様の正しい型でない場合、動作は 未定義です」と記載されています。
ただし、gcc -Wformat
(に含まれています-Wall
)は上記のプログラムについて文句を言いません、なぜですか?これはバグですか、それとも意図的な省略ですか?
gccのマンページから:
"printf"
およびなどの呼び出しをチェック"scanf"
して、指定された引数が指定されたフォーマット文字列に適切な型を持っていること、およびフォーマット文字列で指定された変換が意味をなすことを確認します。
c - short int の代わりに整数書式指定子を使用する: コードがこのように動作するのはなぜですか?
次のプログラムに入力として 4 つの整数 (a = 10、b = 20、d = 30、e = 40 など) を指定すると、 と が計算さc = a + b = 0
れf = d + e = 70
ます。この異常な動作は、短い int に間違った書式指定子を使用しているためであることはわかっていますが、ここで正確に何が起こっているのでしょうか? 最後の 2 つの入力の合計が正しく、最初の 2 つの数値の合計が常に 0 になるのはなぜですか?