よび知識

C言語に関する最低限の注意に始まり、ちょっと深いものもあります。
他の章に入らないようなことで、知っておいてもらいたいこと、です。


○大文字小文字の区別

C言語では、変数等に使われる名前は、大文字小文字が区別されます。
Valuevalueは別の変数として扱われます。注意。


○書式の自由性

C言語では、終わりに「;」セミコロンを付けて、文、つまり1処理の終了を
表します。ですから、
int main(){int i;i=0;i++;i-=1;printf("iは%dです",i);return 0;}
行に納めることを意識することなく、読みにくく処理を書くことが可能です。


○コメント

C言語では、「/*」と「*/」で囲まれた領域はコメントになります。
C++では、「//」から改行コードまで、も、コメントになります。


○main関数

「関数」の説明はまた今度な。

int main(){
から
}
までが、main関数です。

HSPではスクリプトの頭から処理が始まりますが、
Cではmain関数の頭から処理が始まります。
そして、main関数を抜けたらプログラムの終了です。
(windowsプログラムでは、ちょっと事情がちゃうらしいです)

main関数の最後にある、
  return 0;
はOSにプログラムの正常終了を報告するためのおまじないです。


○16進数

講座内で、接頭に0xが表記されているものは16進数として読んでください。
表記されていない場合でも、それっぽく感じたら16進数として読んでください。

なんでしょう。改めて説明をつけるほどのものかどうか解らんですが。
たまたま知らない人もおるかもしれないので、さらっと説明しときます。

10進数は
  0,1,2,3,4,5,6,7,8,9
で表されます。
16進数は
  0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
で表されます。

10進数は位の数字が9を超えると桁が上がりますが、
16進数は位の数字がFを超えると桁が上がりますが。

10進数と16進数は表記が違うだけで、どちらも数値であり、
10進数と16進数は相互に変換することができます。

以下、対応表をごらんあれ。同じ行の数は同じ数値を示しています。
	    10進			16進
		01			01
		02			02
		03			03
		04			04
		05			05
		06			06
		07			07
		08			08
		09			09
		10			0A
		11			0B
		12			0C
		13			0D
		14			0E
		15			0F
		16			10
		17			11
		18			12
		19			13
		20			14
数は続くよどこまでも。


○式と文

講座中で、「式」や「文」などと言った用語が使われますが、
これはそのときの気分で適当に使っているのではなく、
明確な意味の違いがあります。

  「文」    セミコロンまでで。(例外あり?)
  「式」    文よりも小さい単位。値を表す。

ゴボウを抜く力もなさそうな説明ですね。

たとえば、
	a = 1+1;			これは文です。

	a = 1+1			これは式です。(代入)

	1+1			これも式です。

	a			これも式です。

	=			これは式でも文でもありません。

	a;			文です。

	;			文なんだよ。
こんな感じで、そのときの気分で適…げほッ

…関数に引数として渡すようなものは、式になります。


○真偽の値

(HSPでもあるのですが)C言語には、真の値偽の値があります。
世をしのぶ仮の値が偽の値で、変身後の姿が真の値である訳がないことは
あえて説明をくわえるまでもないとは思ったのですがいちおう言ってみました。

    真の値    0以外
    偽の値    0


なのです。どういう意味かと申しますと。
if文は()の中身が真の場合は次の文を実行する、そういう機能があります。
これはつまり、()の中身が0以外の場合は次の文を実行する、ということなのです。
	if(1){
		printf("必ず呼ばれます");
	}
このような処理のとき、ifブロックの中は必ず実行されます。
	if(919919){
		printf("必ず呼ばれます");
	}
もちろんこのようにしても必ず実行されます。

ブロックの中が実行されないのは
	if(0){
		printf("さびしいな");
	}
あらゆる数値の中で0だけです

では、よく見かける普通の処理の、
	if(a == 3){
		printf("aが3だったら呼ばれる");
	}
これはどういうことなのですか?

注)フォントによっては潰れているかもしれませんが、「==」はイコールイコールです。

「==」も、等価演算子と呼ばれる、「演算子」です。
例えば「+」という演算子は、右側と左側にある数値を加算したものを
新しい数値として返します。
「==」という演算子は、右側と左側にある数値が等しい場合に、
真の値(おそらくは1)を返し、等しくない場合は偽(0)を返します。

気になるのでしたら、
  printf("%d",1192 == 1192);
  printf("%d",1192 == 4126);
などとやってみて、実際に返される値を見てみるとよいでせう。

また、Cの処理系では、TRUEFALSEという定数が定義されていることが多く、
TRUEは(おそらく)1、FALSEは0と定義されているはずです。
ですから、
	if(TRUE){
		printf("必ず呼ばれます");
	}
こういった処理を書くこともできますですよはい。

なんかつまらん話でしたね。


○printf

C入門のなんとかってのに必ず出てくる関数です。
#include <stdio.h>
int main(){
	printf("地球ノミナサンコンニチハ");
	
	return 0;
}
(出力)
地球ノミナサンコンニチハ

己の胸部を軽く掌打しつつ実行してみましょう。

#include <stdio.h>
HSPの#include文と基本的に同じ機能です。
<>で囲むとコンパイラのincludeフォルダから、
""で囲むと今書いてるソースコードが入ってるフォルダから、
目的のファイルを検索してきます。
C言語で標準に用意されているprintf関数がこのファイルに宣言されているので、
printfを使うときは必ずこの1行が必要です。

printf("地球ノミナサンコンニチハ");
標準なんとかというところに、「地球ノミナサンコンニチハ」と、書いてくれる関数です。

printfの偉い所は、引数の値を指定した形で展開出力してくれることで、
サンプルコードからデバッグまで、多くの場面でつかわれます。
#include <stdio.h>
int main(){
	int i = 8;
	printf("てつじん%dごう",i);
	
	return 0;
}
てつじん8ごう
printfは1コ以上のパラメータをとり、
第1パラメータに出力の書式を指定します。
第2パラメータ以降に、内容を出力したい変数を指定します。

書式の文字列は、
  %d  10進数で出力する
  %x  16進数で出力する
  %f  実数で出力する
  %s  文字列として出力する
などが指定できます。

仕様が細かく、詳しく説明しないので、経験と勘で覚えていってください。
この講座ってこんなんばっかりです。