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