GCCのC言語入門です。おさらいがてらまとめ中です。
Contents
導入
Hello World
GCC C言語を使うには、PCにgccをインストールするところから始めます。
Linuxの場合は、aptでインストールすれば良いです。
root~# apt-get install gcc
一番簡単なプログラムを書いてみましょう。
#include <stdio.h> int main() { puts("Hello World!"); }
実行するためには、まずビルドする必要があります。
takk~$ gcc hello.c takk~$ ./a.out Hello World! takk~$
#include
mainも関数なので戻り値が必要です。
成功を返す場合は、0を返すようにプログラムしますが、省略しても0が返ります。
takk~$ ./a.out;echo $? Hello World! 0 takk~$
returnで1を返すように書き換えると、
#include <stdio.h> int main() { puts("Hello World!"); return 1; }
これをビルドして実行すると、
takk~$ gcc;./a.out;echo $? Hello World! 1 takk~$
$?には実行結果が格納されており、echoでそれを表示しました。
1が返りましたね。
putsは、文字列を表示してくれる関数です。
よくあるHello Worldの例ではputsではなくprintfを使ってたりしますが結果は変わりません。
確認するためputsをprintfに書き換えてみます。
#include <stdio.h> int main() { printf("Hello World!\n"); return 0; }
ビルドして実行。
takk~$ gcc;./a.out;echo $? Hello World! 0 takk~$
先ほどと同じ結果ですね。
変数、型、リテラル
変数の型って聞くだけで面倒くさいですが、慣れてしまえば呼吸のように意識せずに使えます。そして意識しないからこそ、バグになるパターン多いです。
#include <stdio.h> int main() { int i = -105000; /* 符号付32bit整数 */ unsigned int ui = 0xFF0055AA; /* 符号なし64bit整数 */ float f = 1.0/3; /* 単精度浮動小数点数 */ double d = 1.0/3; /* 倍精度浮動小数点数 */ char c = 'A'; /* 文字 */ char* s = "string"; /* 文字列 */ int a[] = {10,20,30}; /* 配列 */ char *v[] = {"AA","BB","CC"}; /* 文字列の配列 */ printf("i = %d (0x%0x)\n",i,i); printf("ui = %d (0x%0x)\n",ui,ui); printf("f = %.30g\n",f); printf("d = %.30g\n",d); printf("s = %s\n",s); printf("a[1] = %d\n",a[1]); printf("v[1] = %s\n",v[1]); return 0; }
実行結果です。
takk~$ gcc test.c takk~$ ./a.out i = -105000 (0xfffe65d8) ui = -16755286 (0xff0055aa) f = 0.3333333432674407958984375 d = 0.333333333333333314829616256247 s = string a[1] = 20 v[1] = BB takk~$
コメント
コメントは、/*〜*/で囲うブロックコメントと、//以降をコメントにする方法、さらに#ifで無効化する方法があります。
#include <stdio.h> int main() { /* puts("出力されません"); puts("出力されません"); puts("出力されません"); */ puts("AAAA"); // puts("出力されません"); #if 0 puts("出力されません"); #endif return 0; }
出力結果です。無効になっているputsは出力されていませんね。
takk~$ ./a.out AAAA takk~$
コメント