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

Cは、オペレーティングシステム、ゲーム、その他の高性能作業に使用される汎用のコンピュータープログラミング言語です。

2
なぜCはポインターにアスタリスクを使用するのですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私は今Cについて学んでいます。 作成者*が実際にポインターのように見えるシンボル()ではなく、ポインターのシンボルとしてアスタリスク()を選択したのは奇妙に思えます->。 逆参照と関数ポインターの混乱を考慮すると、アスタリスクを使用する歴史的、または実用的な理由がありますか?
21 c  history  syntax 

11
低遅延コードは時々「ugい」必要がありますか?
(これは主に、低遅延システムに関する特定の知識を持っている人を対象とし、根拠のない意見で答えるだけの人を避けるためです)。 「いい」オブジェクト指向のコードを書くことと、非常に高速で低レイテンシーのコードを書くことの間にトレードオフがあると思いますか?たとえば、C ++の仮想関数/多態性などのオーバーヘッドを回避する-見た目は悪いが非常に高速なコードを書き換えるなど それは理にかなっています-maintainいように見える人は誰でも気にしません(メンテナンス可能であれば)-速度が必要な場合、速度が必要ですか? 私はそのような分野で働いた人々から話を聞きたいと思います。
21 java  c++  c  performance  latency 

8
新しい上級開発者のタスク
明日から8年間の.NETの経験を持つ上級開発者が11,000行のコードアプリケーションで作業するようになりました。チームには、私と他のプログラマーがいます。両方ともそれぞれ約3年の経験があります。 これはマネージャーとしての私の最初のプロジェクト(私はプロジェクトの開発者でもあります)であり、既に確立されたコードベースを誰かに紹介しなければならなかったのはこれが初めてです。当然、各モジュール、展開プロセスなどを調べて、ソース管理リポジトリの場所、ドキュメント(最高ではありません)などを渡します。 新しい機能の作成とバグの修正を開始する準備が整うまで、どれくらいの時間を与える必要がありますか?

6
CまたはC ++で「nullチェック」を行うとはどういう意味ですか?
私はC ++を学んでおり、nullを理解するのに苦労しています。特に、私が読んだチュートリアルでは「nullチェック」の実行に言及していますが、それが何を意味するのか、なぜ必要なのかはわかりません。 ヌルとは正確には何ですか? 「nullをチェックする」とはどういう意味ですか? 常にヌルをチェックする必要がありますか? どんなコード例でも大歓迎です。
21 c++  c  null 

9
CはC ++とどう違うのですか?
多くの人が、C ++はCとはまったく異なる言語であると言っていますが、Bjarne自身は、C ++はCから拡張された言語であるため、それが++由来していると述べています。それでは、なぜ誰もがCとC ++は完全に異なる言語であると言い続けるのでしょうか?C ++の拡張機能を除いて、CはC ++とどのように違いますか?

2
Javaがファイル名を引数に入れないのはなぜですか?
CおよびC ++では、mainメソッドは、argv [0]の配列の最初の位置にファイル名を保持します。ただし、Javaでは、ファイル名はargs文字列配列に含まれません。 これには実用的な理由がありますか?これにより、コマンドライン引数を1ベースではなく0ベースで反復処理することを理解していますが、利点はありますか?ファイル名は役に立たないとみなされましたか?
20 java  c++  c 

1
Cライブラリが同じ名前のマクロと関数を使用するのはなぜですか?
PJ Plaugerの「The Standard C Library」を読んでいますが、これは本当に興味深いです。この本では、ライブラリの使用方法だけでなく、ライブラリの実装方法についても説明しています。 ctype.hセクションを読み終え、ヘッダーで関数がマクロと関数の両方として宣言されています。例えば int isdigit(int); だけでなく #define isdigit(c) (_Ctype[(int)(c)] & _DI) 両方が使用される理由がわかりませんか? また、独自のカスタムを再作成しようとすると ctypeヘッダーと実装とすると、マクロを削除する(定義をコメントアウトする)場合にのみ正常にコンパイルできます。 この側面は本で実際に説明されていませんでした。誰か説明してもらえますか?
20 c  naming  functions  macros 

13
オペレーティングシステムがCおよびC ++で低レベルの処理を行うのはなぜですか?なぜC ++だけではないのですか?
WindowsのWikipediaページには、Windowsがブートローダーとタスクスイッチャー用にAssemblyで、カーネルルーチン用にC と C ++で記述されていることが記載されています。 IIRC、あなたがからC ++の関数を呼び出すことができるextern "C"「Dブロック。カーネル関数にCを使用して、純粋なCアプリがそれらを使用できるようにすることができます(printfなど)が、それらをextern "C "ブロックにラップすることができるのであれば、なぜCでコードを書くのですか?

2
組み込みC開発者向けの優れた単体テストの例[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 来週、ユニットテストとテスト駆動開発について私の部署に講演する予定です。その一環として、最近書いたコードから実際の例をいくつか紹介しますが、講演で書く非常に簡単な例をいくつか紹介したいと思います。 私はウェブ上で良い例を探してきましたが、開発分野に特に当てはまるものを見つけるのに苦労していました。私たちが作成するソフトウェアのほとんどは、小型のマイクロコントローラーで実行される埋め込み型の制御システムです。ユニットテストに簡単に適用できる多くのCコードがあります(ターゲット自体ではなくPCでユニットテストについて説明します)。「下」の層から直接離れている限り:直接話すものマイクロコントローラー周辺機器に。しかし、私が見つけたほとんどの例は文字列処理に基づいている傾向があります(たとえば、優れたDive Into Python Romanの数字の例)。文字列を使用することはほとんどないため、これは実際には適切ではありません(コードが通常使用する唯一のライブラリ関数について)ありmemcpy、memcmpそしてmemset、strcat または正規表現は正しくありません)。 では、質問に答えてください。ライブセッションで単体テストのデモンストレーションに使用できる機能の良い例を提供してくれる人はいますか?私の(変更される可能性がある)意見での適切な答えは、おそらく次のとおりです。 誰でも(たまにコードを書くだけでも)理解できるほど単純な関数。 無意味に見えない関数(つまり、パリティまたはCRCを計算することは、おそらく2つの数値を乗算してランダムな定数を追加する関数よりも優れています)。 人の部屋の前に書くのに十分短い関数(エラーを減らすためにVimの多くのクリップボードを利用するかもしれません...); 文字列を処理するのではなく、数値、配列、ポインター、または構造体をパラメーターとして受け取り、類似のものを返す関数。 単純なエラー(例えば)>ではなく、簡単に入力できる関数は、>=ほとんどの場合は動作しますが、特定のエッジケースで破損する可能性があります。ユニットテストで簡単に識別および修正できます。 何かご意見は? おそらく関連性はありませんが、テスト自体はおそらくGoogle Test Frameworkを使用してC ++で記述されます。すべてのヘッダーには既に#ifdef __cplusplus extern "C" {ラッパーがあります。これは、これまでに行ったテストでうまく機能しました。

10
ポインター/再帰の難しさは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 Javaスクールの危険の中で、ジョエルはペンでの経験と「セグメンテーションフォールト」の難しさについて話します。彼は言い​​ます [セグメンテーション違反はあなたまで難しい]「深呼吸をして、同時に2つの異なる抽象化レベルで心を働かせようとする。」 セグメンテーション違反の一般的な原因のリストを考えると、2つの抽象化レベルでどのように作業する必要があるのか​​理解できません。 なんらかの理由で、Joelはこれらの概念をプログラマーが抽象化する能力の中核と考えています。あまり思い込みたくありません。それでは、ポインタ/再帰について何がそんなに難しいのでしょうか?例はいいでしょう。
20 c  pointers  recursion 

2
誰でもメモリ内のフロートの表現を説明できますか?
前の質問を読んだので、これは重複した質問ではありません。 誰でも私を理解するのを助けることができhow float values are stored in the memoryます。 私の疑問は、ここでフロート値に含まれる ' .'(for example 3.45)'.'がメモリ内でどのように表現されるか? 誰かが図で私を明確にしてくれますか?

1
定数をすべて大文字で命名するための歴史は何ですか?
すべて大文字の定数の命名規則の背後にある歴史は何ですか? 私の直感では、Cプリプロセッサから始めました。人々は、プリプロセッサマクロをすべて大文字で命名するプラクティスを開発しました。私の信念は、この慣行はその後誤解され、非プリプロセッサ定数(enums、const変数)にも適用されるように野放しにされたというものです。 プリプロセッサマクロにすべて大文字の名前を付けると、本当に便利に思えます。一般的な定数の命名は、それほどではありません(マクロ名と衝突する場合は逆効果です)。 私は基地を離れていますか?定数を大文字にする慣行はCよりも前でしたか?

4
Cで変数のデータ型を指定する必要があるのはなぜですか
通常、Cでは、変数宣言でデータの種類をコンピューターに伝える必要があります。たとえば、次のプログラムでは、2つの浮動小数点数XとYの合計を出力します。 #include<stdio.h> main() { float X=5.2; float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } 変数Xの型をコンパイラーに伝える必要がありました。 コンパイラXはそれ自身で型を決定できませんか? はい、これを行うとできます: #define X 5.2 コンパイラーに次のようなタイプを伝えることなく、プログラムを作成できるようになりXました。 #include<stdio.h> #define X 5.2 main() { float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } したがって、C言語には何らかの種類の機能があり、それを使用してデータのタイプを独自に判別できることがわかります。私の場合、それXはfloat型であると判断されました。 main()で何かを宣言するとき、なぜデータのタイプに言及しなければならないのですか?なぜコンパイラは、自身の中に変数のデータ型を判断することはできませんmain()、それはでませんよう#define。

4
メモリリークを修正することはどれほど重要ですか?
Valgringによって、いくつかのGTK +プログラムがメモリリークを起こすことがわかりました。これらのリークを修正することはどれほど重要ですか?多くの場合、これらのプログラムは非常にうまく機能しますが、一方で、漏れているコードの一部を他のプログラムにコピーしたいかどうかはわかりません。そして、GTK +-プログラムのアイデアが高速に動作することであるかどうかはわかりません。したがって、リークがあります。 したがって、オープンソースプログラムでメモリリークを見つけることがある場合、それを修正する必要がありますか、たとえば効率性の問題があるので、プログラマの元のアイデアは小さなリークコードを書くことでしたか?
19 c  memory 

7
モジュール式プログラミングは計算時間に影響しますか?
誰もがコードをモジュール化する必要があると言っていますが、より少ないメソッドではなく、より大きなメソッドを使用するよりも多くのメソッド呼び出しを使用すると効率は低下しませんか?その点で、Java、C、またはC ++の違いは何ですか? 特にグループでは、編集、読解、理解が簡単になります。それで、コードの整頓の利点と比較して、計算時間の損失は重要ではありませんか?
19 java  c++  c  efficiency 

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