본문 바로가기

카테고리 없음

Visual Studio, C6

6-1. ex while

#include <stdio.h>
#define EX_WHILE

#if defined EX_WHILE
int main(void)
{
	unsigned char a = 0; 

	while (a < 320 * 240) {
		printf("a = [%d] \t", a);
		a++;
	}

	printf("\n");
	printf("result = [%d]\n", a);

	return 0;
}
#endif

while 문 조건이 a<320*240 인데 char은 8bit로 0~255까지만 표현한다. 조건을 넘지 못해 무한 루프가 반복된다. 

 

조건을 a<200 으로 주면 정상적인 결과가 출력된다. 

#include <stdio.h>
#define EX_WHILE

#if defined EX_WHILE
int main(void)
{
	unsigned char a = 0; 

	while (a < 200) {
		printf("a = [%d] \n", a);
		a++;
	}

	printf("\n");
	printf("result = [%d]\n", a);

	return 0;
}
#endif

 

6-2. ex for

#include <stdio.h>
#define EX_WHILE
#define EX_FOR
#define PRJ_2D

#if defined EX_FOR
int main(void)
{
	int cnt = 0;
	unsigned char array[640 * 480];

#if defined PRJ_2D
	for (int j = 0; j < 480; j++) {
		for (int i = 0; i < 640; i++) {
			printf("i = [%d] j = [%d] \n", i, j);
			array[i * j] = 0xff000;
			cnt++;
		}
	}
#else
	for (int x = 0; x < 640 * 480; x++) {
		printf("x = [%d] \n", x);
	}
#endif 
	printf("loop cnt = [%d]\n", cnt);
	return 0;
}

#elif EX_WHILE
int main(void)
{
	~
	return 0;
}
#endif

i<640, j<380, cnt = 640*480 = 307200

 

6-3. dowhile

#include <stdio.h>
#define EX_WHILE
#define EX_FOR
#define PRJ_2D
#define EX_DOWHILE

#if defined EX_DOWHILE
int main(void)
{
	int a = 0;

	do {
		printf("a = [%d] \n", a);
		a++;
	} while (a < 9);

	printf("result a = [%d] \n", a);

	return 0;
}

#elif EX_FOR

 

6-4. break / continue

#include <stdio.h>
#define EX_WHILE
#define EX_FOR
#define PRJ_2D
#define EX_DOWHILE
#define BREAK_CONTINUE

#if defined BREAK_CONTINUE
int main(void)
{
	for (int i = 0; i < 32; i++) {
		if (i > 5) break;
		printf("i = [%.2d] \n", i);
	}
	return 0;
}

#elif EX_DOWHILE

#include <stdio.h>
#define EX_WHILE
#define EX_FOR
#define PRJ_2D
#define EX_DOWHILE
#define BREAK_CONTINUE

#if defined BREAK_CONTINUE
int main(void)
{
	for (int i = 0; i < 32; i++) {
		if (i >= 10 && i <= 20) continue;
		printf("i = [%d] \n", i);
	}
	return 0;
}

#elif EX_DOWHILE

 

6-5. infinity loop

#include <stdio.h>
#define EX_WHILE
#define EX_FOR
#define PRJ_2D
#define EX_DOWHILE
#define BREAK_CONTINUE
#define INFINITY_LOOP

#if defined INFINITY_LOOP
int main(void)
{
#if 1
	while (1) {
		printf("working while(1)\n");
	}
#else
	for (;;) {
		printf("working for(;;)\n");
	}
#endif
	return 0;
}

#elif BREAK_CONTINUE

#include <stdio.h>
#define EX_WHILE
#define EX_FOR
#define PRJ_2D
#define EX_DOWHILE
#define BREAK_CONTINUE
#define INFINITY_LOOP

#if defined INFINITY_LOOP
int main(void)
{
#if 0
	while (1) {
		printf("working while(1)\n");
	}
#else
	for (;;) {
		printf("working for(;;)\n");
	}
#endif
	return 0;
}

#elif BREAK_CONTINUE