バリケンのRuby日記 RSSフィード

2007-10-08

[] バイナリアンC言語入門(1) - 整数の配列で文字列を作ってみる  バイナリアン的C言語入門(1) - 整数の配列で文字列を作ってみる - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  バイナリアン的C言語入門(1) - 整数の配列で文字列を作ってみる - バリケンのRuby日記  バイナリアン的C言語入門(1) - 整数の配列で文字列を作ってみる - バリケンのRuby日記 のブックマークコメント

とりあえず「どうしてそうなるのか」の解説はあとで。

#include <stdio.h>

int main(void) {
  int str[] = { 1819043144, 1461726319, 1684828783, 33 };
  puts(&str);
  return 0;
}

これをhello2.cとして保存して、コンパイルして実行すると次のような結果になるよ。

$ vi hello2.c
$ cat hello2.c
#include <stdio.h>

int main(void) {
  int str[] = { 1819043144, 1461726319, 1684828783, 33 };
  puts(&str);
  return 0;
}
$ gcc hello2.c
hello2.c: 関数 `main' 内:
hello2.c:5: 警告: 互換性のないポインタ型からの引数 1 個の `puts' を渡しますです
$ ./a.out
Hello, World!
$

次はもうちょっと簡単に。こっちのほうがわかりやすいかな?

#include <stdio.h>

int main(void) {
  int str = 6778724;
  puts(&str);
  str = 7627107;
  puts(&str);
  return 0;
}

これをdog_cat.cとして保存して、コンパイルして実行すると次のような結果になるよ。

$ vi dog_cat.c
$ cat dog_cat.c
#include <stdio.h>

int main(void) {
  int str = 6778724;
  puts(&str);
  str = 7627107;
  puts(&str);
  return 0;
}
$ gcc dog_cat.c
dog_cat.c: 関数 `main' 内:
dog_cat.c:5: 警告: 互換性のないポインタ型からの引数 1 個の `puts' を渡しますです
dog_cat.c:7: 警告: 互換性のないポインタ型からの引数 1 個の `puts' を渡しますです
$ ./a.out
dog
cat
$

余談だけど、コンパイラエラーメッセージの「渡しますです」っていうのは日本語としてちょっと変だよねえ。

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20071008