アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラミング、C言語について質問です!

※例えばこのようなforがあったとします。

今まで使っていたfor文では比較演算子?!があったのですが↓
for(i=0;src[i]==5;i++)

for(i=0;src[i];i++)
このように比較演算子?!がないものを目にしましたが、意味が理解できません。

ちなみに独学のまだプログラミング初心者です。

より詳しく初心者にもわかるように説明できる方おられましたらよろしくお願いしますm(_ _)m

A 回答 (4件)

「0以外は真」というのは、厳密に言えば間違い。


i < 5 といった条件式の場合、結果はTrue(真)又はFalse(偽)の何れかのみです。
#言語等により異なる場合が有りますが、一般的には、False の値として 0、True
#の値として 1 又は -1 が使われます。
条件として数値を使う場合には、値が 0の時をFalseとし、それ以外を「False
ではない」→「True(真)」として扱う事が良く有ります。
    • good
    • 0

No.1です。



> これはC言語では決まりみたいなものですか?(「0以外は真」というのは)
> ※0という数字がないので

その様に考えていただいて構わないと思います。


C言語の入門書や入門サイトをみてみれば if文のあたりで説明があると思いますよ。
たとえば↓です。

C言語入門
http://program-lecture.info/c_if2.html
    • good
    • 0

C言語では



for(式1;式2;式3) {
処理
}


{
式1;
whie(式2) {
処理
式3;
}
}

とほぼ同じ(処理でcontinueが使われたときに差が出る)

というのが1点


比較演算子は、「条件が成立してたら1、そうでないないなら0」という「計算」をする演算子である

というのが1点


if,for,while等で
「条件式が真ならば」
というときには、実は
「式を計算した結果が 0でないならば」
という処理をしている

というのが1点。
初心者向けの本では「条件式」とか書いてあったりするのですが、
より正確に言おうとすると、こうなってます。




> src[i]==5

==も比較演算子です。

> src[i]
は、「src[i]」という式の計算結果(すなわち、src[i]の値そのもの) で判定します。
これは
src[i] != 0
と同等です。
    • good
    • 0

for文は( )内の2番目に書かれた条件が真の間だけループします。




> for(i=0;src[i]==5;i++)

src[0],src[1],……と変化していきsrc[i]の値が5の間ループします。

src[0] の値 5
src[1] の値 5
src[2] の値 5 ←ここまでループ
src[3] の値 4


> for(i=0;src[i];i++)

src[0],src[1],……と変化していきsrc[i]の値が0以外の間ループします。
C言語では、値0は 偽 となり、値0以外は 真 となります。

src[0] の値 1
src[1] の値 2
src[2] の値 3 ←ここまでループ
src[3] の値 0
    • good
    • 0
この回答へのお礼

分かりやすい回答ありがとうございますm(_ _)m
これはC言語では決まりみたいなものですか?(「0以外は真」というのは)
※0という数字がないので

お礼日時:2017/08/11 21:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!