GCC C言語入門

GCCのC言語入門です。おさらいがてらまとめ中です。

スポンサーリンク

導入

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 は、puts関数を使用するために入れておきます。
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~$ 

コメント

タイトルとURLをコピーしました