개발/Programming language

11개의 글

[C] 매크로 함수에서 do~while(0)을 쓰는 이유

매크로 함수를 보다보면 do~while(0) 형태로 되어있는것을 보게 됩니다. #define add(a,b,c) do{a = a + b; }while(0) 왜 이렇게 사용하는지 한번 알아볼께요. 아래는 일반적인 매크로 함수 입니다. #include #define add(a,b,c) {a = a + b; \ c = a + b;} void main() { int a = 300, b = 200, c; if (a > b) { add(a, b, c); //if에 { } 를 사용! } else { printf("Test"); //else에 { } 를 사용! } printf("[ %d %d %d] \n", a, b, c); } 위 코드를 컴파일 해보면 정상적으로 동작합니다. 자 이제 if와 else의 소괄호를 없애고..

[C] 비트필드

구조체로 비트별 설정 가능. typedef struct{ unsigned int up : 1; // 1비트 사용. 0과 1 표현. unsigned int down : 1; int left : 1; // 1비트 사용. -1, 0 표현 unsigned int right : 5 //5비트 사용. }bit; 잘 사용하면 메모리의 효율을 증가시킬수 있다.

[C] 정수 연산시 반올림 연산 방법

15/4 = 3.75 이며, 16/5 = 3.2 이다. 반올림을 하고 싶을때 두가지 방법이 있다. 연산후 0.5를 더하거나, 피연산자에 연산자의 절반을 더하고 연산하는 방법이다. 1) 1>> ((double) 15 / 4) + 0.5 1>> (16+2.5) / 5 2>> (15.0 / 4) + 0.5 2>> 18.5 / 5 3>> 3.75 + 0.5 3>> 3.7 4>> 4.25 4>> 3 5>> 4 피연산자에 연산자의 절반을 더하고 연산하는게 더 속도가 빠르다.

[C] 매크로 함수에서 do~while(0)을 쓰는 이유

매크로 함수를 보다보면 do~while(0) 형태로 되어있는것을 보게 됩니다. #define add(a,b,c) do{a = a + b; }while(0) 왜 이렇게 사용하는지 한번 알아볼께요. 아래는 일반적인 매크로 함수 입니다. #include #define add(a,b,c) {a = a + b; \ c = a + b;} void main() { int a = 300, b = 200, c; if (a > b) { add(a, b, c); //if에 { } 를 사용! } else { printf("Test"); //else에 { } 를 사용! } printf("[ %d %d %d] \n", a, b, c); } 위 코드를 컴파일 해보면 정상적으로 동작합니다. 자 이제 if와 else의 소괄호를 없애고..

[C] 비트필드

구조체로 비트별 설정 가능. typedef struct{ unsigned int up : 1; // 1비트 사용. 0과 1 표현. unsigned int down : 1; int left : 1; // 1비트 사용. -1, 0 표현 unsigned int right : 5 //5비트 사용. }bit; 잘 사용하면 메모리의 효율을 증가시킬수 있다.

[C] 정수 연산시 반올림 연산 방법

15/4 = 3.75 이며, 16/5 = 3.2 이다. 반올림을 하고 싶을때 두가지 방법이 있다. 연산후 0.5를 더하거나, 피연산자에 연산자의 절반을 더하고 연산하는 방법이다. 1) 1>> ((double) 15 / 4) + 0.5 1>> (16+2.5) / 5 2>> (15.0 / 4) + 0.5 2>> 18.5 / 5 3>> 3.75 + 0.5 3>> 3.7 4>> 4.25 4>> 3 5>> 4 피연산자에 연산자의 절반을 더하고 연산하는게 더 속도가 빠르다.

반응형