1. ホーム
  2. c

[解決済み] forループの中で複数の条件を指定することはできますか?

2022-02-17 03:13:12

質問

次のコードは、エラーや警告を出さずに実行されます。

#include<stdio.h>

int main(){
    int i, j;
    int p = 0, q = 2;
    for(i = 0, j = 0; i < p, j < q; i++, j++){
      printf("HelloWorld\n");
    }
    return 0;
}

ただし、本 Let Us C(ヤシュワント・カネトカール) には、forループのtest式は1つしか使えないと書いてあります(同書115ページ参照)。

規格がよくわからないのですが。forループのテスト式に複数の式が許されるのでしょうか?

EDIT : 確かに2つの式を結合することはできるのですが、この上で上記のコードを見つけたときは唖然としました。 ウェブサイト . 私の質問は、これは有効なCコードなのかどうかということです。

解決方法は?

条件

i < p, j < q

の結果を返してしまうので、おそらく意図したものではありません。 j < q だけです。 その カンマ演算子 はカンマの左側の式を評価し、それを破棄して右側の式を評価し、それを返します。

複数の条件についてテストしたい場合は、論理 AND 演算子を使用します。 && 代わりに

i < p && j < q