タグ

cに関するtankuのブックマーク (7)

  • プログラミングの禁じ手Web版 C言語編(InternetArchiveよりサルベージ) - Akio's Log

    はじめに 昔お世話になったC Magazineの「プログラミングの禁じ手Web版 C言語編」というサイトを、後輩に教えてあげようとしたら、C Magazineの休刊後にドメインが失効してしまったようで、見る事が出来ませんでした。 幸い、InternetArchive(http://www.archive.org/web/web.php) に当時のデータがほぼ残っていたので、無許可ではありますがサルベージして転載させてもらいました。 「C MAGAZINE - プログラミングの禁じ手Web版 C言語編」 元のアドレスはこちら。 http://www.cmagazine.jp/src/kinjite/c/index.html InternetArchive http://web.archive.org/web/20070113222026/http://www.cmagazine.jp/src

    プログラミングの禁じ手Web版 C言語編(InternetArchiveよりサルベージ) - Akio's Log
    tanku
    tanku 2009/09/15
    "「プログラミングの禁じ手Web版 C言語編」というサイトを、後輩に教えてあげようとしたら、C Magazineの休刊後にドメインが失効してしまったようで、見る事が出来ませんでした。"
  • 原始的Ruby入門2回目Fizzbuzzの回 - takkan_mのNo planな日常

    一昨日のつづきね。 こないだのHello Worldが、プログラミング言語を学ぶための儀式であるならば、最近のプログラミング言語の学習でこれでも書いとけ的な問題としてFizzBuzz問題というのがある。 1から100までの数字で、3の倍数のときはアホになるFizzと、5の倍数のときはBuzzと、15の倍数はFizzBuzzと、その他の数字は数字をそのまま表示せよという問題。 まず、RubyというのはCの皮をかぶったLispなので、Lisp脳らしく、1から100までの配列を作る。Rubyでは [1,2,3,....,99,100] のように、配列のオブジェクトを生成する簡単な記法が存在するのだが、いちいち100まで書くのは面倒なので、Rangeオブジェクトというのを使い、そこから配列クラスを生成する。 Rangeオブジェクトというのは、指定した範囲を表すオブジェクトである。Rangeオブジェ

    原始的Ruby入門2回目Fizzbuzzの回 - takkan_mのNo planな日常
    tanku
    tanku 2008/04/18
  • 原始的Ruby入門 - takkan_mのNo planな日常

    最近、Rubyを書いていないので再入門しようと思い、Hello World のチュートリアルを書こうと思う。 まず、Rubyを入手する。ここから最新のソースを入手し、コンパイルしておこう。何事も新しいのはいいことだと思う。とりあえず、今回は、安定版の最新ソースを入手。 次に、お好きな vim で新しいファイルを作る。ファイルをつくるのは、先ほど落としたRubyのソースと同じディレクトリがいいだろう。ファイルの先頭には、おきまりのおまじないを書かなくてはいけない。 #include "ruby.h" これは、Rubyを勉強していくうちに理解できると思う。 Rubyは、完全なオブジェクト指向言語なので(信じられるかい?数値や文字列までオブジェクトなんだ。Javaのようにプリミティブな型なんて存在しない。)、まずはオブジェクトを作成しなければならない。作成の方法は、 VALUE my_obj =

    原始的Ruby入門 - takkan_mのNo planな日常
    tanku
    tanku 2008/04/18
  • C 言語で、typedef 名から元の基本型を知る方法があれば教えてください。…

    C 言語で、typedef 名から元の基型を知る方法があれば教えてください。 整数型のみでかまいませんが、移植性の高い方法をお願いします。 符号の有無と大きさだけなら以下のような方法でわかるのですが… >|c| #include <stdio.h> typedef int my_int1; typedef unsigned int my_int2; typedef long int my_int3; typedef unsigned long int my_int4; int main() { printf("%d, %zu\n", ((my_int1)-1) < 0, sizeof(my_int1)); printf("%d, %zu\n", ((my_int2)-1) < 0, sizeof(my_int2)); printf("%d, %zu\n", ((my_int3)-1) <

    tanku
    tanku 2008/04/07
    何に使おうとしてるんだろう‥‥
  • C言語で lambda っぽいもの - from reddit - higepon blog

    Reddit で見つけたネタ。 programming: First Class Functions in C int main() { returns_int_f *times2 = returns_int_lambda("int f(x) { return x * 2; }"); int answer = (*times2)(55); printf("answer is %d\n", answer); } C言語で lambda 式が作れるぜという話。 もちろん色々な点*1で、物の lambda 式ではないのだけどネタとしては面白い。 仕組みのコードはリンク先に書いてありますが 与えられた文字列を gcc に渡してコンパイル結果をELFで取得 ELFを良い感じに読み飛ばして、関数体部分を見つけて call という感じ。 追記 コメントで教えてもらいました。 libtcc を利用した

    C言語で lambda っぽいもの - from reddit - higepon blog
    tanku
    tanku 2007/12/14
  • C 標準関数逆引き辞典

    tanku
    tanku 2007/11/17
    ワイド文字とか
  • ISO Cの型違いポインタアクセス禁止規則 - sumiiのブログ

    http://www.atdot.net/~ko1/diary/200711.html#d15 手近に64ビット環境がない&ちゃんと見ていないので外しているかもしれませんが、 http://gcc.gnu.org/bugs.html#nonbugs_c ("Casting does not work as expected when optimization is turned on.") http://mail-index.netbsd.org/tech-kern/2003/08/11/0001.html あたりにある"dereferencing type-punned pointer will break strict-aliasing rules"問題だったりしないでしょうか。 ISO C規格の和訳(JIS規格)より引用: オブジェクトに格納された値に対するアクセスは,次のうちのいず

    ISO Cの型違いポインタアクセス禁止規則 - sumiiのブログ
    tanku
    tanku 2007/11/15
    union使えって事らしい。へぇー。
  • 1