35

インターネットで見つけたコードをカスタマイズしています ( Adafruit Tweet Receiptです)。コードの多くの部分を理解できませんが、最も困惑するのは、括弧内に 2 つのセミコロンがある for ループです。

boolean jsonParse(int depth, byte endChar) {
  int c, i;
  boolean readName = true;

  for(;;) {  //<---------
    while(isspace(c = timedRead())); // Scan past whitespace
    if(c < 0) return false; // Timeout
    if(c == endChar) return true; // EOD

    if(c == '{') { // Object follows
      if(!jsonParse(depth + 1, '}')) return false;
      if(!depth) return true; // End of file
      if(depth == resultsDepth) { // End of object in results list

for(;;)とはどういう意味ですか? (これはArduinoのプログラムなので、C言語だと思います)。

4

4 に答える 4

78
for(;;) {
}

機能的に意味する

 while (true) {
 }

ループ本体内の何らかの条件に基づいて、おそらくループ/ループからの戻りを中断します。

for(;;)永遠にループする理由forは、3 つの部分があり、それぞれがオプションであるためです。最初の部分はループを初期化します。2 番目はループを続行するかどうかを決定し、3 番目は各反復の最後に何かを行います。これは完全な形式で、通常は次のように表示されます。

for(i = 0; i < 10; i++)

最初 (初期化) または最後 (反復の最後) の部分が欠落している場合、その場所では何も行われません。中間 (テスト) 部分が欠落している場合trueは、その場所にあるかのように機能します。Sofor(;;)は ' と同じでfor(;true;)、これは (上記のように) と同じwhile (true)です。

于 2013-04-19T20:39:29.610 に答える