タグ

c言語に関するPhinlodaのブックマーク (30)

  • 総合目次 - 苦しんで覚えるC言語

    苦Cの内容の転載などは自由ですが、苦Cからの引用であることを明記してください。 (どこかに「苦Cより」と書かれていればOKです。) 学校や会社などで生徒(新入社員)へのテキストとして使用することも自由です。 その際、内容を修正したり、印刷して配布するのも自由です。 サイトについて 苦しんで覚えるC言語(苦C)は C言語入門サイトの決定版です。 C言語の基機能を体系立てて解説しており、 市販書籍と同等以上の完成度です。

    総合目次 - 苦しんで覚えるC言語
    Phinloda
    Phinloda 2013/08/26
    簡単なことをこんなに難しそうに書けるのが素晴らしい。また入門記事書いてみようかな。
  • VisualC++ 2010 ExpressのコマンドラインでCソースをコンパイルする方法。|闇奉行わいんちゃんのお忍び日記帳

  • Output of a++ + ++a + a++

    Phinloda
    Phinloda 2012/07/10
    (English)
  • Shortcut to remember the Order of Evaluation and Precedence of Operators in C

  • あらゆるCプログラマが未定義の動作について知るべきこと - YAMDAS現更新履歴

    LLVM Project Blog: What Every C Programmer Should Know About Undefined Behavior #1/3 LLVM Project Blog: What Every C Programmer Should Know About Undefined Behavior #2/3 LLVM Project Blog: What Every C Programmer Should Know About Undefined Behavior #3/3 コンパイラ基盤 LLVM のブログで、未定義の動作という C 言語のダークサイドについての記事が3回シリーズで公開されている。 C 言語で未定義の動作を実行したら、「鼻から悪魔が飛び出しても文句が言えない」というジョークは有名で……いや、そんなのを知ってるのは年寄りくらいか(参考:nasa

    あらゆるCプログラマが未定義の動作について知るべきこと - YAMDAS現更新履歴
  • Super Technique 講座~longjmpと例外

    プログラムの流れを制御する手段として、いわゆる「構造化構文(for とか if とか)」、悪名高い「goto 文」などがあるのは周知のことだが、かなり特殊なものとして、「setjmp, longjmp」による「非ローカル分岐」と呼ばれるものがある。この「非ローカル分岐」は「非ローカル」と言うだけあって、ある関数の中から、別な関数に制御を移すことができたりする。まあ、そのために乱用すべきではなく、注意して使わなくてはならないライブラリ関数なのだが、実はこれは JavaC++ で言語の上で実装されている「例外」の基礎となるものである。だから、まずこの標準ライブラリ関数「setjmp, longjmp」について解説しよう。 → Java 講座の「例外」 setjmp, longjmp とは どうやって実現してるの? setjmp/longjmp の利用例~インタプリタ 補追1:setjmp

  • ネイティブコード以外の実行ファイルに対してsetuidが効かない件 - komamitsu.log

    ネットワークセキュリティHacks―プロが使うテクニック&ツール100選を読むまですっかり忘れていた。Cを使ういい機会なのでやってみる。 TCPの321番ポートを開くだけのプログラム。 まずはC. #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define ERROR(x) { perror(x); exit(1); } int main(int argc, char *argv[]) { int sock_s, sock_c; socklen_t len_c; struct sockaddr_in addr_s, addr_c; if ((sock_s = socket(PF_INET, SOCK_STREAM,

    ネイティブコード以外の実行ファイルに対してsetuidが効かない件 - komamitsu.log
  • Manpage of PRINTF

  • 苦しんで覚えるC言語

    [全ページ目次] 苦しんで覚えるC言語(苦C)は、初心者を対象としたC言語入門サイトです。 C言語の基機能を体系立てて解説しており、市販書籍と同等以上の完成度です。 初めての人は 前書き から読み始めて下さい。 キーボードの矢印キーか、右下の進む>で次のページに移動します。 コンパイラ入手:基礎編:応用編:標準ライブラリ 全文検索:ダウンロード版:苦Cアンケート:ミス報告:掲示板で質問 [  更新情報  ] 01月22日 : Visual C++ 2005 Express Edition 10月30日 : Borland C++ BuilderX Personal 10月07日 : 掲示板に寄せられたQ&A項目を作成 03月10日 : ドラッグへの対応 ※ミス報告で報告されたミスの修正は約100回以上行っています。 苦Cについて 苦Cの使用法(特に読まなくても良い

  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • TCC : Tiny C Compiler

    News [Note: I am no longer working on TCC. Check the mailing list to get up to date information.] Features SMALL! You can compile and execute C code everywhere, for example on rescue disks (about 100KB for x86 TCC executable, including C preprocessor, C compiler, assembler and linker). FAST! tcc generates x86 code. No byte code overhead. Compile, assemble and link several times faster than GCC. UN

  • Linux カーネル コーディング規約

    Linux カーネル コーディング規約 [プレインテキスト版] 原著作者: Linus Torvalds <torvalds at osdl dot org> 翻訳者: Ken Iwamoto <iwamoto dot kn at ncos dot nec dot co dot jp> Toshikazu Nakayama <nakayama dot ts at ncos dot nec dot co dot jp> Nobuo Yoshida <yoshida dot nb at ncos dot nec dot co dot jp> バージョン: 2.6.24 翻訳日時: 2008/03/26 ================================== これは、 linux-2.6.24/Documentation/CodingStyle の和訳 です。 翻訳団体: JF

  • ライン・ルーチン (1)線分描画のアルゴリズム

    になるので、x = 0, 1, ... 5 を代入して y = 0, 0.6, ... 3 を求め、その結果を順にプロットしていけばよいことになります(当然、各点の座標値は整数でなければならないため、実際には計算値の小数部を四捨五入して (0,0),(1,1),...(5,3) をプロットします)。 しかし、傾きが急な線分 (m > 1) の場合、Y座標の増分が1より大きくなって、とびとびにプロットされる事になるため、「X座標を変化させつつY座標を求める」のではなく「Y座標を変化させつつX座標を求める」ことになります。 ここで 0≦m<1の場合のみを考えます。この時、直線の傾きは右上がりで 45°より小さくなります。 上の例では各座標毎にxを代入してyを求めていましたが、xが1増えるとyはmずつ増加する事に着目すると、

    Phinloda
    Phinloda 2008/10/31
    ブレセンハムの線分発生アルゴリズム(Bresenham's line algorithm)
  • プログラム言語 C の推奨されるスタイルとコーディング規範

    L.W.Cannon R.A.Elliot L.W.Kirchhoff J.H.Miller J.M.Milner R.W.Mitze E.P.Schan N.O.Whittingson Bell Labs Henry Spencer Zoology Computer System University of Toronto David Keppel EECS, UC Barkeley CS&E, University of Washington Mark Brader SoftQuad Incorporated Toronto 豊田 英司 (訳) 東京大学大学院数理科学研究科 向 修一 (訳) 浅沼 伸彦 (訳) 東京大学理学部 Abstract この文書は the Indian Hill C Style and Coding Standards を アップデートしたもので、最後の 3

  • C/C++ 迷信集 | 株式会社きじねこ

    C/C++ を使うプログラマは大勢います。しかし、その多くは OJT を通して言語を学んだのではないでしょうか? 実はそこに大きな落とし穴があります。 コンピュータや工学のことをよく知らない人たちは、時代の先端を歩むプログラマには「迷信」など無関係だと信じて疑わないかも知れません。しかし、迷信や誤解はどんな世界にも常に存在しています。 というわけで、ここでは C/C++ にまつわる迷信、誤解、よくある間違いを採り上げていきます。非常に後ろ向きな企画ですが、暇つぶし気分転換に読んでみてください。もしかすると、ご自身が迷信にとらわれていたことに気付くかもしれません。 追記(2009/03/15) このコーナーでは、C/C++ にまつわる迷信、誤解、よくある間違いを扱っています。決して「迷信」だけではないのですが、タイトルにはすべて[迷信]を付けています。 これは、主に検索エンジンでタイトルを見

  • 「 *s 」と「 s[] 」の違い - IT戦記

    沖林さんがんばれ! なんか、かわいそうになってきた><がんばってください! C/C++のポインタの機能--配列との関係 - builder by ZDNet Japan ところで 僕はちゃんと説明できるかな>< 少しでも言葉や概念が変だったら教えてください>< *s char *s = "hoge"; コードがロードされたときに文字列もメモリにロードされて、実行時にスタックにポインタ変数ができて文字列を指す。 文字列がロードされたメモリのページ(?)には、書き込み権限が付加されないので文字列の内容を書き換えることはできない。 .cstring str: .ascii "hoge" .text .globl _main _main: pushl $str ↑イメージ的にはこんな感じ s[] char s[] = "hoge"; コードがロードされたときに文字列もメモリにロードされ、実行時にス

    「 *s 」と「 s[] 」の違い - IT戦記
  • C/C のポインタの機能--参照渡し - page2 - builder by ZDNet Japan

    ポインタとは ポインタはC/C++言語の特徴的な機能のひとつである。ポインタ(pointer)を直訳すると「指し示すもの」であり、別の変数や文字列定数の場所を指し示すために使う。また、ポインタを指すポインタ(ポインタへのポインタ)というものも存在する。 このページをお読みいただいている読者にあっては、「C言語 ポインタ」「C++ ポインタ」などのキーワードでWeb検索をしたことがあるかもしれない。そうするとポインタに特化した内容の書籍をいくつか見つけられる。それだけ奥が深い機能ということである。 ポインタの用途 では、ポインタはどんなところで使われているのだろう。C/C++言語では、あらかじめ定義されている関数が多数存在するが、その一覧には、*(アスタリスクあるいはアステリスク)が付いているものをよく見かける。 これらはポインタを表し、主に文字列の操作やファイルをはじめとするデータの入出力

    C/C のポインタの機能--参照渡し - page2 - builder by ZDNet Japan
    Phinloda
    Phinloda 2008/04/09
    最近見なかったレベルの物凄い記事らしくて猛烈に盛り上がっているそうだ
  • C言語入門、東京大学情報科学科の場合 | スラド デベロッパー

    C言語入門、書籍だろうが講議だろうが、この業界なら誰もが通る道ではあるが、 sumiiの日記経由で実に興味深いC言語入門を見付けた。 東京大学理学部情報科学科の学部2年生向けのアルゴリズムとデータ構造演習内でのC言語入門 なのだが、 C入門第1回では、シェルを実装、データを圧縮・解凍するプログラムを実装、スパムフィルタを実装というお題目が並んでいる。 これだけで一瞬ひるんでしまったが、解説PDFを見ると、 「最低でもジョブ管理、リダイレクト、(多段)パイプラインの機能は実装すること」などと書かれている。 UNIXへの理解がかなりないと難しい気がするのだが、これをくぐり抜けてくる学生はどれくらいいるのだろう?

  • strchr() ではまった話 - bkブログ

    strchr() ではまった話 標準Cライブラリに strchr() という関数があります。文字列の先頭から指定した文字を探すという単純な関数なのですが、先日、意外な仕様を知りました。 以下のコードを見てみます。 if (strchr("+-*/", c)) { // c は四則演算の記号かな? ... } この if 文は c が + - * / のいずれかの場合に条件が真となり、ブロック中が実行されます。…と、思いきや、実は条件が真になるケースがもうひとつありました。c が '\0' の場合です。 まさかと思って手元の Linux の man を見ると、文字列の終端のナル文字 ('\0') の扱いは明記されていません。 The strchr() function returns a pointer to the first occurrence of the character c i

  • K.Maebashi's はてなブログ

    いやさ、こんなのごちゃごちゃいうほどのもんでもない。 kmaebashi.comJavaScriptでカレンダーを作るのは別に難しい話でもないんですが、どうもカレンダーとかWebページに貼るとなると、すぐこうあれやこれやと外部ライブラリを使おうという話が出てくる。外部ライブラリを拾ってきたって使い方を覚えたり評価したりカスタマイズしたりが必要なので、こんなの自分で作る方がたぶん誰にとっても早いですよ。20年近く前、仕事でカレンダーパーツを作る必要があって、ASP.NETにカレンダーのパーツがあったので若いのがそれ使って作ろうとして、要件の一部が実装できなくて苦労していたので「そんなもん自分で作れ」と言ったらあっさりできた、ということがあったのを思い出した。 ライセンスは私の知る限りもっとも緩いライセンスであるNYSL(煮るなり焼くなり好きにしろライセンス)なので、よければ使ってやってくださ

    K.Maebashi's はてなブログ