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

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



2
Linuxで時間を測定する-時間vsクロックvs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
タイミング機能のうち、time、clock getrusage、clock_gettime、gettimeofdayとtimespec_get、私は彼らが実装されている方法を明確に理解したいとどのような状況で、私はそれらを使用する必要があります知っているために、その戻り値がどのようなもの。 まず、壁時計の値を返す関数を、プロセスまたはスレッドの値を返す関数と比較して分類する必要があります。渡されたパラメーターに応じて、壁gettimeofday時計の値をclock_gettime返し、壁時計の値、プロセスまたはスレッドの値を返しますClock。プロセス値getrusageをclock返します。 次に、2番目の質問は、これらの関数の実装と、その結果としての正確さに関するものです。これらの関数が使用するハードウェアまたはソフトウェアのメカニズム。 getrusageカーネルティック(通常は1ミリ秒の長さ)のみを使用しているようです。その結果、ミリ秒よりも正確になることはありません。正しいですか?次に、getimeofday関数は利用可能な最も正確な基盤ハードウェアを使用しているようです。結果として、最近のハードウェアでは、その精度は通常マイクロ秒です(APIのためにそれ以上になることはありません)。何をclock、「近似」についてのmanページを話すが、それは何を意味するのでしょうか?何をclock_gettime、APIはナノ秒である、それは基礎となるハードウェアで許可されていれば、それはとても正確であることが可能だということを意味していますか?単調性はどうですか? 他の機能はありますか?
148 c  linux  time  linux-kernel 

10
ダフのデバイスはどのように機能しますか?
ダフィのデバイスでウィキペディアの記事を読んだのですが、わかりません。私は本当に興味がありますが、そこで何度か説明を読んだのですが、ダフのデバイスがどのように機能するのかわかりません。 より詳細な説明は何でしょうか?
147 c  duffs-device 

10
void *の意味と使用方法は?
今日私が他の人のコードを読んでいたとき、私はのようなものを見ましたvoid *func(void* i);、これはvoid*それぞれ関数名と変数タイプに対してここで何を意味しますか? さらに、この種のポインターをいつ使用する必要がありますか?
147 c 

13
日常の機械はどのようにプログラムされていますか?
日常の機械(電化製品やデジタル時計など、コンピューターやモバイルデバイスではない)はどのようにプログラミングされていますか?コカコーラの自動販売機のプログラミングにはどのようなコードが含まれますか?私のコーヒーメーカーは、事前にプログラムされた時間をどのように受け入れ、その時間が到着した後、コーヒーのポットの醸造をどのように開始しますか? これらの種類のマシンは内部にオペレーティングシステムを持っていますか、それとももっと基本的なものですか?彼らはアセンブリ、C、または他の言語で書かれていますか? そして、これらのオペレーティングシステムまたは基になるコードシステムをリストするリソースを見つけたいと思います。できれば、ソースコードを使用することもできます。誰かがそのようなリソースを知っている場合(検索しても何も得られなかった)、それは素晴らしいことです。

2
scanfで文字列を読み取る
私は何かについて少し混乱しています。Cの文字列を正しく読み取る方法はscanf()、 (バッファオーバーフローの可能性を気にしないでください。これは単なる例です) char string[256]; scanf( "%s" , string ); ただし、以下も機能するようです。 scanf( "%s" , &string ); これは私のコンパイラ(gcc)、純粋な運、または何か他のものですか?
147 c  scanf 

9
C ++ rand()が同じ桁の数値のみを生成するように見えるのはなぜですか?
C / C ++で書かれた小さなアプリケーションで、rand関数とおそらくシードの問題に直面しています: 次数が異なる、つまり対数の値が異なる(2を底とする)一連の乱数を生成したい。しかし、生成される数値はすべて同じ次数であり、2 ^ 25と2 ^ 30の間で変動しているようです。 rand()これは、現在比較的大きな数値であるUnix時間がシードされているためですか?何を忘れてるの?rand()の初めに1回だけ播種しmain()ます。
146 c++  c  math  random 

5
Cで1つの構造体を別の構造体に割り当てます
次のように、構造体のインスタンスを別のインスタンスに割り当てることができますか? struct Test t1; struct Test t2; t2 = t1; 私はそれが単純な構造で機能するのを見てきましたが、それは複雑な構造で機能しますか? コンパイラーは、データ型をデータ型に応じてコピーする方法をどのように知っていintますか?つまり、と文字列を区別していますか?
146 c  struct 

3
C / C ++プリプロセッサの1行に1つのポンド/ハッシュ記号(#)を付ける目的は何ですか?
私はBoostライブラリのソースコードを見ていましたが、プリプロセッサディレクティブが付加されていないシングルポンド記号がよくあることに気づきました。GCCプリプロセッサのマニュアルと仕様ガイドを読みましたが、何も見つかりません。 (1) #ifndef BOOST_CONFIG_HPP (2) # include <boost/config.hpp> (3) #endif (4) # (5) #if defined(BOOST_HAS_PRAGMA_ONCE) (6) # pragma once (7) #endif 4行目では、ポンド記号の後に何もありません。これはどのような影響がありますか?Cプリプロセッサ(CPP)仕様で定義されていますか? Boostはクロスプラットフォームライブラリであるため、CPPで正しく解析できると思います。コード全体にランダムなポンド記号/ハッシュ記号があると、どのような影響/副作用がありますか?
145 c++  c  boost  c-preprocessor 


4
なぜpthread_cond_waitに偽のウェイクアップがあるのですか?
manページを引用するには: 条件変数を使用する場合、各条件に関連付けられた共有変数を含むブール述語が常にあり、スレッドが続行する場合はtrueになります。pthread_cond_timedwait()またはpthread_cond_wait()関数からの誤ったウェイクアップが発生する場合があります。pthread_cond_timedwait()またはpthread_cond_wait()からの戻りは、この述部の値について何の意味も持たないので、そのような戻り時に述部を再評価する必要があります。 そのため、pthread_cond_wait通知していなくても戻ることができます。少なくとも一見すると、それはかなりひどいようです。これは、間違った値をランダムに返したり、実際に適切なreturnステートメントに到達する前にランダムに返したりする関数のようなものです。大きなバグのようです。しかし、これを修正するのではなくmanページに文書化することを選択したという事実は、pthread_cond_wait誤って目を覚ますことになる正当な理由があることを示しているようです。おそらく、それがどうしようもないようにそれを作るそれがどのように機能するかについて本質的な何かがある。問題は何ですか。 なぜpthread_cond_wait偽って戻るのですか?正しく通知された場合にのみウェイクアップすることを保証できないのはなぜですか?誰かがその偽の振る舞いの理由を説明できますか?
145 c  pthreads 

6
前のconstまたは後のconst?
開始するには、おそらくそれを知っています const使用して、オブジェクトのデータまたはポインタを変更できないようにするか、またはその両方を行うことができることます。 const Object* obj; // can't change data Object* const obj; // can't change pointer const Object* const obj; // can't change data or pointer ただし、次の構文も使用できます。 Object const *obj; // same as const Object* obj; 問題と思われるのは、アスタリスクのどちら側に置くかだけです。 constキーワードを入力。個人的にconstは、タイプの左側に置いて、データが変更可能ではないことを指定することを好みます。左から右への考え方ではデータが読みやすいため、どの構文が最初に来るのですか? さらに重要なのは、なぜ指定する2つの正しい方法があるのか constデータ、また、どのような状況で、どちらか一方を好むか、どちらか一方が必要な場合にどちらが必要かということです。 編集: ですから、私が生まれるずっと前にコンパイラが物事を解釈する方法の標準が起草されたとき、これは恣意的な決定だったようです。constはキーワードの左側にあるものに適用されるので(デフォルトでは?)、少なくとも宣言が変更されるときまで、他の方法でキーワードと型修飾子を適用するための「ショートカット」を追加しても害はなかったと思います*または&の解析... これはCの場合もそうでした。
145 c++  c  syntax  const 

4
ios_base :: sync_with_stdio(false);の意味 cin.tie(NULL);
含めることの意味は何ですか ios_base::sync_with_stdio(false); cin.tie(NULL); C ++プログラムでは? 私のテストでは実行時間が短縮されましたが、これを含めることで心配する必要があるテストケースはありますか? 2つのステートメントは常に一緒にする必要がありcin.tie(NULL)ますか、それとも最初のステートメントで十分ですか、つまり無視しますか? また、CおよびC ++コマンドを同時に使用することは、その値が設定されている場合に許可されfalseますか? https://www.codechef.com/viewsolution/7316085 上記のコードはscanf/printf、値がのC ++プログラムで使用するまでは問題なく機能しましたtrue。この場合、セグメンテーション違反が発生しました。これについて考えられる説明は何でしょうか?
145 c++  c 

9
Visual Studioデバッガーで動的に割り当てられた配列を表示する方法
静的に割り当てられた配列がある場合、Visual Studioデバッガーはすべての配列要素を簡単に表示できます。ただし、配列が動的に割り当てられ、ポインターによってポイントされている場合、+をクリックして展開すると、配列の最初の要素のみが表示されます。デバッガーに伝える簡単な方法はありますか?このデータをFoo型とサイズXの配列として表示しますか?

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