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

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

10
_t(下線-t)が後に続くタイプは何を表しますか?
これは簡単な質問のようですが、スタックオーバーフロー検索やGoogleでは見つかりません。タイプの後に_t意味とは何ですか?といった int_t anInt; ハードウェアと密接に対応することを目的としたCコードで多く見られます。それらは関連していると思わずにはいられません。

12
Cで文字列を整数に変換する方法は?
Cで文字列を整数に変換する別の方法があるかどうかを確認しようとしています。 私は定期的に次のコードをパターン化しています。 char s[] = "45"; int num = atoi(s); それで、より良い方法または別の方法がありますか?
260 c  string  atoi 

10
SIGPIPEを防ぐ(または適切に処理する)方法
TCPまたはローカルUNIXソケットでの接続を受け入れ、単純なコマンドを読み取り、コマンドに応じて応答を送信する小さなサーバープログラムがあります。問題は、クライアントがときどき回答に関心を持たずに早く終了する可能性があるため、そのソケットに書き込むとSIGPIPEが発生し、サーバーがクラッシュすることです。ここでクラッシュを防ぐためのベストプラクティスは何ですか?行の反対側がまだ読んでいるかどうかを確認する方法はありますか?(select()は、ソケットが書き込み可能であると常に表示するため、ここでは機能しないようです)。または、ハンドラーでSIGPIPEをキャッチして無視する必要がありますか?
260 c  io  signals  broken-pipe  sigpipe 

12
Cでの矢印演算子(->)の使用法
「Teach Yourself C in 21 Days」という本を読んでいます(すでにJavaとC#を習得しているので、ずっと速いペースで動いています)。ポインタの章を読んでいたところ、->(矢印)演算子が説明なしに表示されました。メンバーと関数を呼び出すために使用されていると思います.((ドット)演算子と同等ですが、メンバーではなくポインター用です)。しかし、私は完全にはわかりません。 説明とコードサンプルを入手できますか?
257 c  pointers  syntax 

3
malloc + memsetがcallocより遅いのはなぜですか?
割り当てられたメモリを初期化することとcallocは異なることが知らmallocれています。を使用するcallocと、メモリはゼロに設定されます。ではmalloc、メモリがクリアされません。 だから、日常の仕事で、私は考えるcallocようmalloc+ memset。ちなみに、おもしろいように、ベンチマーク用に次のコードを書きました。 結果は混乱を招きます。 コード1: #include<stdio.h> #include<stdlib.h> #define BLOCK_SIZE 1024*1024*256 int main() { int i=0; char *buf[10]; while(i<10) { buf[i] = (char*)calloc(1,BLOCK_SIZE); i++; } } コード1の出力: time ./a.out **real 0m0.287s** user 0m0.095s sys 0m0.192s コード2: #include<stdio.h> #include<stdlib.h> #include<string.h> #define BLOCK_SIZE 1024*1024*256 int main() { int i=0; char *buf[10]; while(i<10) { …
256 c  malloc 

10
GCCを使用して読み取り可能なアセンブリを生成しますか?
CのソースファイルでGCCを使用して、ニーモニックバージョンのマシンコードをダンプし、コードのコンパイル先を確認する方法を考えていました。あなたはJavaでこれを行うことができますが、私はGCCで方法を見つけることができませんでした。 私はアセンブリでCメソッドを書き直そうとしていますが、GCCがそれをどのように行うかを確認すると、大きな助けになります。
256 c  gcc  assembly 

15
CおよびC ++での共用体の目的
私は以前にユニオンを快適に使用しました。今日、私はこの投稿を読んで、このコードが union ARGB { uint32_t colour; struct componentsTag { uint8_t b; uint8_t g; uint8_t r; uint8_t a; } components; } pixel; pixel.colour = 0xff040201; // ARGB::colour is the active member from now on // somewhere down the line, without any edit to pixel if(pixel.components.a) // accessing the non-active member ARGB::components …
254 c++  c  unions  type-punning 

11
Cの数学ライブラリをリンクする必要があるのはなぜですか?
Cプログラムに組み込ん<stdlib.h>だり<stdio.h>、Cプログラムに組み込んだりする場合、コンパイル時にこれらをリンクする必要はありませんが、たとえばgcc <math.h>を使用-lmしてにリンクする必要があります。 gcc test.c -o test -lm これの理由は何ですか?数学ライブラリを明示的にリンクする必要があるのに、他のライブラリをリンクする必要がないのはなぜですか?
254 c  compilation  math.h 



6
なぜ0 <-0x80000000なのですか?
以下に簡単なプログラムを示します。 #include &lt;stdio.h&gt; #define INT32_MIN (-0x80000000) int main(void) { long long bal = 0; if(bal &lt; INT32_MIN ) { printf("Failed!!!"); } else { printf("Success!!!"); } return 0; } 条件if(bal &lt; INT32_MIN )は常に真です。どのようにして可能ですか? マクロを次のように変更すると正常に動作します。 #define INT32_MIN (-2147483648L) 誰でも問題を指摘できますか?

10
オブジェクトを初期化するときの{0}の意味は?
ときに{0}オブジェクトを初期化するために使用され、それが何を意味するのでしょうか?私は{0}どこへの参照も見つけることができません。中括弧があるため、Google検索は役に立ちません。 コード例: SHELLEXECUTEINFO sexi = {0}; // what does this do? sexi.cbSize = sizeof(SHELLEXECUTEINFO); sexi.hwnd = NULL; sexi.fMask = SEE_MASK_NOCLOSEPROCESS; sexi.lpFile = lpFile.c_str(); sexi.lpParameters = args; sexi.nShow = nShow; if(ShellExecuteEx(&amp;sexi)) { DWORD wait = WaitForSingleObject(sexi.hProcess, INFINITE); if(wait == WAIT_OBJECT_0) GetExitCodeProcess(sexi.hProcess, &amp;returnCode); } これがないと、上記のコードは実行時にクラッシュします。
252 c++  c 



22
Cはsin()やその他の数学関数をどのように計算しますか?
私は.NET逆アセンブリとGCCソースコードを調べてきましたが、実際の実装sin()や他の数学関数をどこにも見つけることができません...それらは常に何か他のものを参照しているようです。 誰かが私を見つけてくれますか?Cを実行するすべてのハードウェアがハードウェアのトリガー関数をサポートすることはありそうにないので、どこかにソフトウェアアルゴリズムがあるはずですよね? 私は関数を計算できるいくつかの方法を知っており、楽しみのためにテイラー級数を使用して関数を計算するための独自のルーチンを作成しました。私のアルゴリズムはかなり賢いと思いますが(明らかにそうではありません)、私の実装のすべてが常に数桁遅いので、実際のプロダクション言語がどのようにそれを行うかについて知りたいです。
248 c  math  trigonometry 

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