Schmidt: C: Geltungsbereich von Variablen

Beitrag lesen

Hallo

bei folgendem C-Code bekomme ich die Ausgabe

  
[...]  
->8 Stellen: (0) (1) 2 (3) (4) (5) (6) (7) (8)  
->8 Stellen: (0) 1 (2) (3) (4) (5) (6) (7) (8)  
->8 Stellen: 0 (1) (2) (3) (4) (5) (6) (7) (8)  
->9 Stellen: (0) (1) (2) (3) (4) (5) (6) (7) (8)  

>Spielvarianten: 0  

Variable 'varianten' enthält also den Wert 0 am Ende des Programms (Zeile C), obwohl nach der Initialisierung mit 0 offensichtlich '++varianten';(Zeile A) aufgerufen wurde, denn sonst gäbe es keine Ausgabe von Zeile B.

Wo liegt der Fehler?
Ich kann ihn nicht finden.

Danke.

  
  
#include <stdint.h>  
#include <stdio.h>  
  
int main(void){  
	  
	uint8_t logic1;  
	uint8_t varianten=0;  
	  
	for(uint8_t stellen=0; stellen<=9; stellen++){  
		  
		//durchlaufe spielconfigs;  
			for(uint16_t spielstart=0; spielstart<=511; spielstart++){  
				logic1=0;  
				//count logic 1:  
					for(uint8_t x=0; x<=8; x++){  
						if( spielstart&(1<<x) ){  
							logic1++;  
						}  
					}  
					//printf("\n%d ", spielstart);  
				//print spielconfig		  
					if( logic1==stellen){  
						++varianten; //Zeile A  
						printf("\n->%d Stellen: ", stellen); //Zeile B  
						//configuration ausgeben:  
						for(uint8_t h=0; h<=8; h++){  
							if( spielstart&(1<<h) ){  
								printf( "(%d) ", h );  
							}else{  
								printf( "%d ", h );  
							}  
							  
						}  
					}	  
				  
			}  
	}  
	printf("\n>Spielvarianten: %d", varianten); //Zeile C  
	return 0;  
}