タグ付けされた質問 「c」

Cは、システムプログラミング(OSおよび組み込み)、ライブラリ、ゲーム、クロスプラットフォームに使用される汎用プログラミング言語です。このタグは、ISO 9899標準で定義されているC言語に関する一般的な質問で使用する必要があります(特に指定のない限り、最新バージョン9899:2018。バージョン固有のリクエストには、c89、c99、c11などのタグも付けます)。CはC ++とは異なり、合理的な理由がない限り、C ++タグと組み合わせるべきではありません。

22
C ++の「->」演算子とは何ですか?
StackаэтотвопросестьответынаStack Overflowнарусском:Чтотакоеоператор "->"вС++? 読んだ後に隠された機能とCのダークコーナー++ / STLのをcomp.lang.c++.moderated、私は完全に次のコードがコンパイルおよびVisual Studio 2008とG ++ 4.4の両方で働いていたことに驚きました。 コードは次のとおりです。 #include <stdio.h> int main() { int x = 10; while (x --> 0) // x goes to 0 { printf("%d ", x); } } 出力: 9 8 7 6 5 4 3 2 1 0 GCCでも動作するので、これはCだと思います。これは規格のどこに定義されており、どこから来たのですか?

10
SQLiteの1秒あたりのINSERTパフォーマンスを向上させる
SQLiteの最適化には注意が必要です。Cアプリケーションの一括挿入のパフォーマンスは、1秒あたり85挿入から1秒あたり96,000挿入を超える場合があります。 背景: SQLiteをデスクトップアプリケーションの一部として使用しています。大量の構成データがXMLファイルに格納されており、アプリケーションが初期化されるときに解析され、SQLiteデータベースにロードされてさらに処理されます。SQLiteは高速であり、特別な構成を必要とせず、データベースは単一のファイルとしてディスクに保存されるため、この状況に最適です。 理論的根拠: 最初は私が見ているパフォーマンスにがっかりしました。SQLiteのパフォーマンスは、データベースの構成方法とAPIの使用方法に応じて(一括挿入と選択の両方で)大きく異なる可能性があることがわかりました。すべてのオプションと手法が何であるかを理解することは簡単なことではなかったので、同じコミュニティのWikiエントリを作成してスタックオーバーフローリーダーと結果を共有し、同じ調査の問題を他の人に知らせるのは賢明だと思いました。 実験:一般的なパフォーマンスのヒント(つまり、「トランザクションを使用する!」)について単に話すのではなく、Cコードを記述して実際にさまざまなオプションの影響を測定するのが最善だと思いました。いくつかの簡単なデータから始めましょう: トロント市の完全な輸送スケジュールの28 MBのタブ区切りテキストファイル(約865,000レコード) 私のテストマシンは、Windows XPを実行する3.60 GHz P4です。 コードは、Visual C ++ 2005で「完全最適化」(/ Ox)付きの「リリース」としてコンパイルされ、高速コード(/ Ot)が優先されます。 私はテストアプリケーションに直接コンパイルされたSQLite "Amalgamation"を使用しています。私がたまたま持っているSQLiteのバージョンは少し古い(3.6.7)ですが、これらの結果は最新のリリースに匹敵すると思われます(そうでない場合はコメントを残してください)。 コードを書いてみましょう! コード:テキストファイルを1行ずつ読み取り、文字列を値に分割し、データをSQLiteデータベースに挿入する単純なCプログラム。この「ベースライン」バージョンのコードでは、データベースが作成されますが、実際にはデータを挿入しません。 /************************************************************* Baseline code to experiment with SQLite performance. Input data is a 28 MB TAB-delimited text file of the complete Toronto Transit System schedule/route info from http://www.toronto.ca/open/datasets/ttc-routes/ **************************************************************/ …


28
mallocの結果をキャストしますか?
でこの質問、誰かがで提案されているコメント、私がすべきことではないの結果キャストmallocすなわち、 int *sieve = malloc(sizeof(int) * length); のではなく: int *sieve = (int *) malloc(sizeof(int) * length); これはなぜでしょうか?
2408 c  malloc  casting 


10
要素ごとの加算が、結合されたループよりも個別のループではるかに速いのはなぜですか?
仮定a1、b1、c1、およびd1ヒープメモリと私の数値コードのポイントは、以下のコアループを有しています。 const int n = 100000; for (int j = 0; j < n; j++) { a1[j] += b1[j]; c1[j] += d1[j]; } このループは、別の外部forループを介して10,000回実行されます。スピードアップするために、コードを次のように変更しました。 for (int j = 0; j < n; j++) { a1[j] += b1[j]; } for (int j = 0; j < n; j++) { c1[j] += …

4
??!??!とは何ですか 演算子はCで行いますか?
次のようなCの行が表示されました。 !ErrorHasOccured() ??!??! HandleError(); 正しくコンパイルされ、正常に実行されているようです。エラーが発生したかどうかをチェックし、エラーが発生した場合は処理するようです。しかし、私はそれが実際に何をしているのか、どのようにそれをしているのか本当にわかりません。プログラマーがエラーについての感情を表現しようとしているように見えます。 これ??!??!までにどのプログラミング言語でも見たことがなく、そのためのドキュメントをどこにも見つけることができません。(Googleはのような検索用語をサポートしていません??!??!)。それは何をし、コードサンプルはどのように機能しますか?
1990 c  operators  trigraphs 

5
とは ":-!!" Cコードで?
/usr/include/linux/kernel.hにあるこの奇妙なマクロコードにぶつかりました。 /* Force a compilation error if condition is true, but also produce a result (of value 0 and type size_t), so the expression can be used e.g. in a structure initializer (or where-ever else comma expressions aren't permitted). */ #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) #define BUILD_BUG_ON_NULL(e) ((void *)sizeof(struct …
1665 c  linux  macros  linux-kernel 


18
配列の場合、なぜa [5] == 5 [a]になるのですか?
Joel がCプログラミング言語(別名:K&R)のStack Overflowポッドキャスト#34で指摘しているように、Cでは配列のこのプロパティについて言及されています。a[5] == 5[a] ジョエルは、それはポインター演算のせいだと言いますが、私はまだ理解していません。なぜa[5] == 5[a]ですか?

23
高放射性環境で使用するためのアプリケーションのコンパイル
私たちは、電離放射線の衝撃を受けた環境のシールドされたデバイスに導入された組み込みC / C ++アプリケーションをコンパイルしています。ARM向けにGCCとクロスコンパイルを使用しています。デプロイすると、アプリケーションが誤ったデータを生成し、予想よりも頻繁にクラッシュします。ハードウェアはこの環境用に設計されており、アプリケーションはこのプラットフォームで数年間実行されています。 コードに加えることができる変更、または単一イベントの混乱によって引き起こされるソフトエラーとメモリ破損を特定/修正するために実行できるコンパイル時の改善はありますか?他の開発者は、長期実行アプリケーションでのソフトエラーの悪影響を軽減することに成功しましたか?
1456 c++  c  gcc  embedded  fault-tolerance 


11
Cの関数ポインタはどのように機能しますか?
最近、Cで関数ポインタを使用した経験があります。 それで、あなた自身の質問に答えるという伝統を続けて、私はその主題に素早く飛び込む必要がある人々のために、非常に基本的なことの小さな要約を作ることにしました。
1233 c  function-pointers 



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.