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

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

4
純粋にCでiOSアプリを書く方法
私はここを読みますObjective-Cの前にLearn C? 通常、私は次にいくつかのObj-Cコードを純粋なCコードに置き換えます(結局、好きなだけそれらを組み合わせることができ、Obj-Cメソッドのコンテンツは完全に純粋なCコードにすることができます) これは本当ですか? 純粋にCプログラミング言語でiPhoneアプリを構築することは可能ですか?

17
なぜポインタを使用するのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 これは本当に基本的な質問ですが、高級言語でいくつかのプロジェクトをコーディングした後、基本的なC ++プログラミングから始めました。 基本的に私は3つの質問があります: 通常の変数でポインタを使用する理由 いつ、どこでポインタを使用すればよいですか? 配列でポインタをどのように使用しますか?
356 c++  c  pointers 

5
__attribute __((constructor))はどのように正確に機能しますか?
セットアップが必要なことは明らかです。 正確にはいつ実行されますか? 括弧が2つあるのはなぜですか? ある__attribute__機能は?マクロ?構文? これはCで動作しますか?C ++? 機能する関数は静的である必要がありますか? いつ__attribute__((destructor))実行しますか? Objective-Cの例: __attribute__((constructor)) static void initialize_navigationBarImages() { navigationBarImages = [[NSMutableDictionary alloc] init]; } __attribute__((destructor)) static void destroy_navigationBarImages() { [navigationBarImages release]; }
347 c++  objective-c  c  gcc 

17
Cでconst / literal文字列を連結するにはどうすればよいですか?
私はCで作業しており、いくつかのことを連結する必要があります。 今私はこれを持っています: message = strcat("TEXT ", var); message2 = strcat(strcat("TEXT ", foo), strcat(" TEXT ", bar)); Cでの経験があれば、実行しようとしたときにセグメンテーション違反が発生することに気付くはずです。それで、どうすればそれを回避できますか?
346 c  string  concatenation 

10
Cで先頭の0を印刷しますか?
私は郵便番号の01001のように、先頭の0を印刷する良い方法を見つけようとしています。数は1001として格納されますが、それを行うための良い方法は何ですか? 私はどちらかのcaseステートメントを使用することを考えました/その場合、数字が何桁であるかを把握し、それを印刷用に追加の0を含むchar配列に変換しますが、これを行う方法はないと思いますが、わずらわしいprintf形式の構文。
344 c  printf 

8
Cで「unsigned long」を印刷する方法は?
unsigned longCでデータ型を出力する方法を理解できません。 がであるunsigned_fooとするunsigned longと、私は試してみます: printf("%lu\n", unsigned_foo) printf("%du\n", unsigned_foo) printf("%ud\n", unsigned_foo) printf("%ll\n", unsigned_foo) printf("%ld\n", unsigned_foo) printf("%dl\n", unsigned_foo) そして、それらすべては私が持っているものの-123123123代わりにある種の数を印刷しunsigned longます。



10
可変数の引数を渡す
可変数の引数をとるC関数があるとします。内部から可変数の引数を期待する別の関数を呼び出して、最初の関数に渡されたすべての引数を渡すにはどうすればよいでしょうか。 例: void format_string(char *fmt, ...); void debug_print(int dbg_lvl, char *fmt, ...) { format_string(fmt, /* how do I pass all the arguments from '...'? */); fprintf(stdout, fmt); }

22
初期化されていないローカル変数は最速の乱数ジェネレータですか?
初期化されていないローカル変数が未定義の動作(UB)であることを知っています。また、値にはトラップ表現があり、それが以降の操作に影響を与える可能性があります。ただし、乱数を視覚的表現にのみ使用し、それ以外の部分では使用しない場合もあります。たとえば、プログラムを視覚効果にランダムな色で設定します。次に例を示します。 void updateEffect(){ for(int i=0;i<1000;i++){ int r; int g; int b; star[i].setColor(r%255,g%255,b%255); bool isVisible; star[i].setVisible(isVisible); } } それよりも速いですか void updateEffect(){ for(int i=0;i<1000;i++){ star[i].setColor(rand()%255,rand()%255,rand()%255); star[i].setVisible(rand()%2==0?true:false); } } また、他の乱数ジェネレータよりも高速ですか?

30
ループや条件なしで1から1000を印刷する
ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 タスク:ループや条件ステートメントを使用せずに、1から1000までの数値を出力します。printf()or coutステートメントを1000回だけ書くのではありません。 CまたはC ++を使用してそれをどのように行いますか?
323 c++  c  printf 

23
単一行のifまたはループに中括弧(つまり{})を使用する目的は何ですか?
私は私のC ++講師の講義ノートをいくつか読んでいます、そして彼は以下を書きました: インデントを使用// OK 演算子の優先順位に依存しない-常に括弧を使用する// OK 常に{}ブロックを使用します-1 行の場合でも// OKではありません。なぜですか??? 比較の左側にあるConstオブジェクト// OK > = 0の変数には符号なしを使用します//素敵なトリック 削除後にポインターをNULLに設定-二重削除保護//悪くない 3番目の手法は私にははっきりしていません。1つの行を{ ... }? たとえば、次の奇妙なコードを見てください。 int j = 0; for (int i = 0 ; i < 100 ; ++i) { if (i % 2 == 0) { j++; } } そしてそれを次のものに置き換えます: int j = 0; …

9
C / Objective-Cで文字列リテラルを複数の行に分割する方法は?
私はかなり長いsqliteクエリを持っています: const char *sql_query = "SELECT statuses.word_id FROM lang1_words, statuses WHERE statuses.word_id = lang1_words.word_id ORDER BY lang1_words.word ASC"; 読みやすくするために、複数の行に分割する方法を教えてください。次の場合: const char *sql_query = "SELECT word_id FROM table1, table2 WHERE table2.word_id = table1.word_id ORDER BY table1.word ASC"; エラーが発生します。 クエリを複数行で書く方法はありますか?
321 c  objective-c 

4
C ++とCを組み合わせる-#ifdef __cplusplusはどのように機能しますか?
私は、多くのレガシーCコードを含むプロジェクトに取り組んでいます。最終的にレガシーコードを変換することも目的として、C ++での記述を開始しました。CとC ++の相互作用について少し混乱しています。C ++コンパイラでCコードをラップしてもextern "C"、Cコードの名前が壊れないことは理解していますが、これを実装する方法は完全にはわかりません。 したがって、各Cヘッダーファイルの先頭(インクルードガードの後)には、 #ifdef __cplusplus extern "C" { #endif 下部には、 #ifdef __cplusplus } #endif 2つの間に、すべてのinclude、typedef、および関数プロトタイプがあります。これを正しく理解しているかどうかを確認するために、いくつか質問があります。 CヘッダーファイルBhを含み、別のCヘッダーファイルCh を含むC ++ファイルA.hhがある場合、これはどのように機能しますか?コンパイラーがBhにステップイン__cplusplusすると、コードがラップされるextern "C" (__cplusplusこのブロック内で定義されない)と定義されていると思います 。したがって、Chにステップ __cplusplusインすると、は定義されず、コードはでラップされません extern "C"。これは正しいです? コードの一部をラップすることに問題はあり extern "C" { extern "C" { .. } }ますか?2番目extern "C" は何をしますか? このラッパーは.cファイルではなく、.hファイルのみに配置します。では、関数にプロトタイプがない場合はどうなりますか?コンパイラーはそれをC ++関数であると考えていますか? また、Cで記述されたサードパーティのコードも使用しており、この種のラッパーはありません。そのライブラリのヘッダーを含めるときはいつでもextern "C"、#includeを配置しています。これはそれに対処する正しい方法ですか? 最後に、これは良いアイデアですか?他にすべきことはありますか?近い将来、CとC ++を混合する予定です。すべてのベースをカバーできるようにしたいと思います。

4
このC関数は常にfalseを返す必要がありますが、そうではありません
昔、フォーラムで興味深い質問を見つけました。その答えを知りたいのですが。 次のC関数を考えます。 f1.c #include <stdbool.h> bool f1() { int var1 = 1000; int var2 = 2000; int var3 = var1 + var2; return (var3 == 0) ? true : false; } これは常にfalseから戻るはずvar3 == 3000です。mainこの関数は次のようになります。 main.c #include <stdio.h> #include <stdbool.h> int main() { printf( f1() == true ? "true\n" : "false\n"); …
317 c  gcc 

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