0

長年のプログラマーとして、謙虚なforループでさえ完全に理解されていないことを認識するのは冷静です。1次のプログラムがコンソールにシングルを出力するのはなぜですか? 1最初のループでも!が生成されることを期待しています。-ansiスイッチでコンパイル。

/* gcc installed version: 4:4.4.4-1ubuntu2 */

#include <stdio.h>

#define SIZE 2

int main()
{
  int i;  
  int a[SIZE];

  a[0]=0; 
  a[1]=1;

  for(i=0; (i<SIZE) && (a[i]!=0); i++)        
    printf("%i\n",a[i]); 

  for(i=0; i<SIZE; i++)   
    if (a[i]!=0)  
      printf("%i\n",a[i]);      

  return 0;      
}
4

2 に答える 2

1

最初のループは次と同等です。

for(i=0; ; i++) {
    if( !((i<SIZE) && (a[i]!=0)))
        break;      
    printf("%i\n",a[i]); 
}
于 2012-09-21T23:29:43.327 に答える
0

これは次の違いです。

for(i=0; i<SIZE; i++)   
  if (a[i]!=0)  
    printf("%i\n",a[i]);
  else
    continue; // implicit in your version with the if statement

この:

for(i=0; i<SIZE; i++)   
  if (a[i]!=0)  
    printf("%i\n",a[i]);
  else
    break; // equivalent of what the non if statement version does.

(実際に問題を発見した @ta.speot.is の功績は、単なる説明にすぎません)

于 2012-09-21T23:31:17.930 に答える