タグ

C言語に関するiori_oのブックマーク (11)

  • C言語、知ってるつもり? | POSTD

    「Cならわかるよ」というプログラマーは大勢います。確かにCの文法はよく知られているし、44年の歴史を誇るわけだし、あいまいな機能に悩まされることもありません。簡単ですよね! あ、「Cならわかるよ」と 言うだけなら 簡単ですよねっていう意味ですよ。学校で習った人もいるだろうしお仕事で使ったことがある人もいるでしょう。覚えることもそんなに多くないし、完璧だという人もいるかもしれません。いいでしょう。でも、Cって実は、そんなにシンプルではないのです。 嘘だと思うなら、今から挙げる問題を解いてみましょう。たった5問です。基的にはどれも同じで「戻り値は何ですか?」という問題ばかりです。四択方式で、どの問題も正解はひとつだけです。さあどうぞ。 第1問

    C言語、知ってるつもり? | POSTD
    iori_o
    iori_o 2016/11/30
    やった!全問正解!エキスパートCプログラミング(http://amzn.to/2gHazG4)読んでてよかった!(アフィリエイトです)
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
    iori_o
    iori_o 2016/02/18
    "C言語の第1のルールは、「もし避けられるならC言語を使うな」ということです。"/"C言語の開発では「80年代90年代に学んだ事柄」に留まろうという気持ちを捨てなくはなりません。"
  • How to C (as of 2016)

    How to C in 2016 This is a draft I wrote in early 2015 and never got around to publishing. Here’s the mostly unpolished version because it wasn’t doing anybody any good sitting in my drafts folder. The simplest change was updating year 2015 to 2016 at publication time. (Update: Many people have submitted revisions, notes, and improvements. All contributions have been incorporated throughout the pa

    iori_o
    iori_o 2016/01/12
    C離れしてる間に知らないことが増えていた
  • 「C言語でプログラミングする際の覚書」の誤訳箇所 - アスペ日記

    ここでは、C言語でプログラミングする際の覚書の誤訳を列挙します。 参考として、私の翻訳はC言語プログラミングの覚え書き(改訳)にあります。 What follows is ... ×従うべきは ○これから述べるのは "What follows" で「続くもの」という意味です。ここでの「続く」というのは、現在の文章に続く、つまり「以下に述べること」です。 But they've been accumulating in my head, if not on paper until now, for a long time, ... ×しかし、私の意見は頭のなかにしばらくあったものをまとめたものであり、長らく文章として公開してきませんでした。 ○しかし、これらのことは、文書として書いたことはありませんでしたが、私の頭の中に長い時間をかけて蓄積してきたもので、… "if not on paper

    「C言語でプログラミングする際の覚書」の誤訳箇所 - アスペ日記
  • C言語における暗黙の型変換とAPI設計 - もなもなもなかのページ

    #include <stdio.h> #include <stdlib.h> int main(void) { int a = 65535; char b; b = a; printf("%d %d\n", a, b); return EXIT_SUCCESS; } 「a に 65535 を代入し,b に a の値を代入しているのだから,b も 65535 になるはず.」 などとLL言語(JavaScriptRuby など)に慣れていると思ってしまいがちだが,そうはならない. なぜなら,一般に,char 型の変数が保持できる値の範囲は,int 型の変数が保持できる値の範囲よりも小さいから. 概ね(…とボカす理由は後述),char は -128 から 127 までの整数しか保存できない. この性質は,ときどき,極めて恐ろしい. C言語は,上の例のように保持できる値の範囲が小さい変数への

  • 第22回・国際難解Cコードコンテストの入賞コードが公開される | スラド デベロッパー

    国際難解Cコードコンテスト(International Obfuscated C Code Contest、IOCCC)第22回で入賞したソースコードが同サイトで公開された。 IOCCCは、「故意に読みづらいC言語のコードを書き、その汚さなどを競うというハッカーの奇祭」(Wikipediaより)。 複数の部門があり、それぞれ入賞コードが挙げられているが、日人では遠藤侑介(Yusuke Endoh)氏が「Most tweetable 1-liner」wおよび「Most lazy SKIer」、「Most recyclable」、「Most solid」の4部門で入賞している。それぞれのコードは遠藤氏のブログで解説されている(「Most lazy SKIer」と「Most recyclable」のコードの解説、「Most tweetable 1-liner」と「Most solid」のコード

  • C 言語にポインタがある理由は省メモリ化・高速化・開発作業の省力化です - 偏見プログラマの語り!

    前回の記事『プログラム初心者にC言語のポインタを不意ながら教える羽目になったなら、こう教えると良いよ』でポインタの教え方を書きました。ソレに対して「そもそもどうしてポインタっていう仕組みがあるの?」という質問をもらったので、つらつらと書こうと思います。稿は「ポインタがある理由の教え方」ではなく「ポインタがある理由」です。分かっている人には相当に退屈な文章ですのでそういう人は読まずにお帰りください。 で、えーと、結論だけ先に言うと省メモリ化のため、次に速度アップのため、そして生産性アップのためです。 1. メモリは有限である。 マシンに搭載されているメモリには限りがあります。メモリ空間は広大ですが、無限ではないのです。 好き放題にどんどんメモリを使ってデータを格納するわけにはいかないというわけです。しかしプログラムは計算のためにメモリ空間を占有します。仮に↓こんな感じに、わずかな有限メモ

  • 世界で2番目にわかりやすいポインタの話

    これ以上に解りやすく説明できるという人は、@super_rti までURLを教えて下さい。世界一わかりやすいの看板を差し上げます。

    世界で2番目にわかりやすいポインタの話
    iori_o
    iori_o 2012/06/12
    わかりやすいんだけどモヤっとする。喩えが多いからかな。
  • プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!

    僕がプログラミングに触れた当時は、プログラミングといえば「まず C 言語」でした。それから 10 年以上が経ちました。学校の授業や企業の研修では未だに C 言語を教えているところがあるようです。関数型プログラミング言語という波が来ている 2012 年にもなって未だに C 言語をやっているというのはまるで進歩が無く残念な気もしますが、比較的多くのプログラマに浸透している共通言語を最初に教えるというのは、一方では喜ばしい事だと解釈する事もできるのかもしれません*1。まぁとにかく、意にせよ不意にせよ現場で プログラム初心者に C 言語を教える羽目になった 人がたくさんいて、プログラム初心者なのに C 言語を学ばざるを得なくなった 若者がたくさんいるということです。 C 言語を教えるときに避けて通れないのがポインタで、プログラム初心者が C 言語を学ぶときにやたらとつまずく人が多いのがポインタ

    プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!
  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

    iori_o
    iori_o 2012/01/16
    ポインタを英語で読もうってのを他でも読んだ記憶がある。
  • C言語における文字列連結 — KaoriYa

    C言語で文字列連結を行う。とても簡単に思えるけれど、実はパフォーマンスについて考えることもあるんだよ、というお話。 C言語で2つ文字列の連結して、1つの文字列にするプログラム(関数)を書けるでしょうか? ちょっとC言語でプログラミングを学んだことがあれば簡単ですよね。要求仕様としては2つの引数aとbをとり、どちらもNULターミネートな文字列で、その文字列をヒープから確保した領域で連結して戻り値として返す、という感じの動作です。ヨユーですね。ちょっと書いてみてください。 char* str_join(const char* a, const char* b) { char* p = malloc(strlen(a) + strlen(b) + 1); strcpy(p, a); strcat(p, b); return p; } こんな風に書いてしまったあなたは及第点です。個人的には失格です

  • 1