問題タブ [c11]
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 - ポインターの比較に関する標準の奇妙な言い回し
§6.5.8\6 (>、<、<=、>= について)
式 P が配列オブジェクトの要素を指し、式 Q が同じ配列オブジェクトの最後の要素を指している場合、ポインター式 Q+1 は P より大きいと比較されます。それ以外の場合、動作は未定義です。
上記のいくつかのセクション、§6.5.8 では、基本的に、ポインター演算は配列に対して期待どおりに機能することが説明されています。つまりint a[3]; int *p = a; int *q = &a[2]; //q-p == 3
有効です。ただし、上記を読むq > p
とUBです。
私は何が欠けていますか?
c - この定数式はどのように評価されますか?
定数式を説明するとき、標準(まあ、ドラフトN1570)はこの「啓発的な」例を示します:
118)
したがって、次の初期化では、
static int i = 2 || 1 / 0;
式は、値が 1 の有効な整数定数式です。
この式はどのように評価されますか?
c - C11 の付属書 K のサポートは、適合する実装に必要ですか?
Daniel Fischer は、標準 C ではないと私が考えるいくつかの関数 ( および ) を利用した質問に答えているときに、問題の関数が附属書 K で定義されていることに注意を促しました。sscanf_s
sprintf_s
規範とは、標準を定義するのに役立つことを意味することを一般的に理解しています。しかし、C 標準への付属書は、伝統的に参考情報としてのみ扱われてきました。附属書 K は、C11 標準で規範としてラベル付けされています。「安全な」関数を定義します。
これは、これらの関数を提供しないコンパイラは C11 標準に準拠していないということですか?
C11標準の草案しか入手できませんが、附属書Kは規範的であると述べられていますが、標準のライブラリセクションでは、附属書Kで説明されている機能について言及されていません。ランタイム制約の定義のメモは、附属書 K は拡張を定義します。
規範的な附属書はオプションの拡張のみを定義していますか?
c - C99 - ダミーの vscanf?
このような一般的な情報要求で SO を煩わせて申し訳ありません。
非常に用語の多い vscanf の定義をたくさん見つけることができますが、関数から何が返されるかを示す具体的な例はあまり見つかりません。
http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frtref%2Fvscanf.htm
ただし、この例は1行の文字列入力のみを対象としていますが、同じことをしようとしていますが、複数行の.txtファイルから読み取っています。
fgets() を使用して一度に 1 行ずつ読み取ってから、vscanf を使用する必要がありますか? IBM infocenter の例のように、関数 vread() 内に配置して、関数内で使用する必要がありますか?
私は CS の 1 年生ですが、これは課題の質問ではありません。追加の作業を行って知識を広げようとしているだけで、まだ vread/vscanf を使用していません。
sscanf の使用に固執する必要がありますか? これがそれと同じくらい愚かである場合、私の謝罪。
PS 私は C を学ぶのが大好きです。この地球上で 31 年間学生として過ごした中で最も楽しかったことは、RSC の何人かとシェイクスピアのワークショップを行ったときです。
c - C11 のマルチパラメータ C 関数のジェネリック
次のように、1パラメーター関数のC11ジェネリックを理解しています:(ここから)
_Generic
しかし、引数が 2 つある関数では面倒なようです。 への呼び出しをネストする必要があります。同じブログからの抜粋:
たとえば、次のように、マルチパラメータ関数に対してより人間が読めるジェネリックを作成する方法はありますか?
返信ありがとうございます。基本的なアイデアは、 のマクロ ラッパーを持つことです_Generic
。
c - C99 の奇妙な配列サイズ [*] と [static] は何ですか?
どうやら、次の関数プロトタイプは C99 と C11 で有効です。
これらの奇妙な添字表記*
、static
、および CV 修飾子の目的は何ですか?
静的に型指定された配列と可変長配列を区別するのに役立ちますか? それとも単なるシンタックスシュガーですか?
c - 符号付きビットフィールドのサポートされている最大値を計算する方法は?
私のプロジェクトに、これを含むサードパーティ ライブラリのヘッダーが含まれているとします。
ビットフィールドの幅が常に 4 であると仮定せずに、実装定義の動作に依存せずに、どのように member に格納できる最大値を決定できますx
か?