if (!変数)とは?
Q.
① if(0)はブロックに入るか?
ブロックとは{}の事
② if(!変数)は何を表しているか?
A.
①入らない
②if(変数=='\ 0') と同じ意味である
解説)
if のカッコの中身は評価(真、偽を判定する)というのが基本だ。
つまり
if(0) bool値におけるfalse
if(1) bool 値におけるtrue
がまず基本だ。
if(変数)if(!変数)if(NULL)等、変数一文字の場合はどのうように考えれば良いのだろうか?
変数が*sを示している場合
これはif(*s == '\0')と同じ意味である。
== は真偽を判定している
つまり変数が存在するかしないかという評価をしているのである。
具体的には下記と同じことである。
if (!string)
とif (string==0)
は同じ意味である
これはwhile の()にも同じ事がいえる
while(条件)
このかっこの中身を評価するという
補足)
char *x 文字列リテラル (x)もしくはポインタ変数の場合によって意味合いが違ってくる
(!x) x == NULL
(x) x != NULL
代表的な書き方は
int x; x がスカラーの場合。
if (!x)
if (x)
等も意欲のある人は考えてほしい。