2016-10-27 3 views
0

Arduino IDE의 for 루프 및 배열에 문제가 있습니다.Arduino - 배열이 작동하지 않는 For 루프

  • TEST1은 하지 작업
  • TEST2 내가 일을 TEST2 얻을 수있는 방법
  • TEST3는

작동 하는가 작동 하는가 하는가? 사전에

void test1(){ 
    for(int i=1; i<5; i++) { 
    individualPixels[i]==1; 
    } 
} 
void test2(){ 
    individualPixels[1]=1; 
    individualPixels[2]=1; 
    individualPixels[3]=1; 
    individualPixels[4]=1; 
    } 
} 
void test3(){ 
    for(int i=1; i<5; i++) { 
    Serial.println(individualPixels[i]); //prints out 0 4 times 
    } 
} 

감사

+0

실제로 무엇을하려고하는지 명확하지 않습니다. 문맥없이, 어떤 의미가 없습니다. 아마도 코드 전체를 게시 할 수 있습니다. – imjosh

+0

예, 죄송합니다. 아래 내 의견을 참조하십시오 – proto

답변

0

실제로 테스트 1에서는 아무 것도 지정하지 않으므로 을 테스트합니다 (individualPixels[i]==1individualPixels[i] = 1이어야 함, 단일 등호).

또한 언급 된 다른 주석 기자와 마찬가지로 C/C++에서는 0 기반 인덱싱을 사용합니다.

1

C/C++ 제로 인덱스 배열, 그래서 TEST1 및 TEST3에 for 루프는 다음과 같아야합니다 :

for(int i=0; i<4; i++) { 
    individualPixels[i]==1; 
} 

Test2를가 타의 추종을 불허하는 브래킷과 배열을 가지고를 인덱스는 0에서 시작해야합니다.

void test2(){ 
    individualPixels[0]=1; 
    individualPixels[1]=1; 
    individualPixels[2]=1; 
    individualPixels[3]=1; 
    //} this shouldn't be here 
} 
+0

고마워, 내 경우에는 배열 60 색인이 있습니다. 나는 다른 것들을 강조하고 싶다. 때로는 individualPixels [0] = 1; individualPixels [1] = 1; 때때로 individualPixels [55] = 1; individualPixels [60] = 1; – proto

+0

} 사본 붙여 넣기 문제였습니다. – proto

1

for 루프는 i = 1로 시작합니다. 배열의 요소로서 0이되도록 (듯이)하려면, 0에서 size-1까지의 인덱스를 사용해 액세스 할 수 있습니다. 그 외에도

array[0] --- first element 
array[1] --- second element 
array[2] --- third element 
array[3] --- fourth element 

(즉, 작동하지 않는다) 두 변수가 동일한 후 반환하면 검사 == 연산자를 사용 루프 제 다음과 같이 4 개 요소 어레이에 액세스 할 수있다 boolean 결과. 대신 값을 설정할 단일 =을 사용해야합니다.

두 번째 테스트는 당신이 배열에 접근 (자신에게 나쁜 습관을 가르 칠 것 같이 내가, 당신이 (E) 책을 읽고에 의해 실제로 예를 들어, 프로그래밍을 배우기 시작하는 것이 좋습니다

을 제거해야하는} 여분을 가지고 잘못된 방법), 효과가 있지만 효율적이지 않을 수 있습니다.

0

대단히 감사합니다. 나는 60 개의 인덱스를 가진 커다란 배열을 가지고 있고, for 루프로 1을 설정하고 싶다. "=="이 주된 문제였습니다. 이제 내가 원하는대로 작동합니다.

void test1(){ 
    for(int i=1; i<5; i++) { 
    individualPixels[i]=1; 
    } 
} 
void test2(){ 
    individualPixels[1]=1; 
    individualPixels[2]=1; 
    individualPixels[3]=1; 
    individualPixels[4]=1; 
} 
void test3(){ 
    for(int i=1; i<5; i++) { 
    Serial.println(individualPixels[i]); //prints out 0 4 times 
    } 
}