'잡다'에 해당되는 글 1건

  1. 2008/07/01 까먹고 있었거나 잊어 먹고 있었던 잡다하면서 나름 중요한 C 문법
2008/07/01 15:33

까먹고 있었거나 잊어 먹고 있었던 잡다하면서 나름 중요한 C 문법

아래 내용은 제가 까먹고 있었거나 생각하지도 못했었던 C 내용들입니다.
이것때문에 연산 결과가 자꾸 다르게 나와서 머리를 싸메고 있었던 적도 있었지요 ㅎㅎ
그냥 후기 삼아서 올려봅니다 ㅎㅎ


 

1. 변수형에 선정에 관하여

int형 연산이 빠른 이유


char c1 = 10, c2 = 20;

char c3 = c1 + c2;


위 과정에서 c1 + c2 연산 수행 시 data의 형 변환이 일어나게 되는데 c1과 c2가 가지고 있는 데이터가 int로 변환된 다음 다시 그 int 데이터가 char 형태의 c3에 대입 된다.

때문에 연산이 필요한 data의 경우에는 int형으로 사용하는 것이 형 변환이 일어나지 않으므로 빠른 연산을 보여 주게 되겠다.


일반적으로 int 형은 연산을 처리하는 processor의 성능에 따라 결정된다고 되어 있다.

(시스템 엔지니어를 위한 c/c++완벽 가이드, 박규환 저, 홍릉과학 출판사) 따라서 32bit의 윈도우 xp 급의 컴퓨터를 사용한다면 연산 하고자 하는 변수는 int로 선언하는 것이 좋을 것 같다.


실수의 경우에는 float는 오차가 너무 크므로 double을 사용하는 것이 좋다.


float a1=0;

double a2 =0;

int b;


for(b=0;b<100<b++)

{

        a1 += 0.1;

        a2 += 0.1;

}

printf("%f      %f     ", a1, a2);


위 프로그램과 a1과 a2의 값을 비교하여 보면 된다.



2. double 형 입력

scanf를 통해 입력 받을 때는 %lf를 사용하여야 한다.

printf에서 출력시에 %f를 사용하여도 되므로 까먹고 있었다.


3. 산술 연산 결과의 자료형은 피연산자의 자료형과 일치한다.


int a =1, b= 2;

float c = a/b;

printf("%f      ",c);

위 프로그램의 결과는 0.0 이다.

 

int 형끼리 연산한 결과는 int형이 되기 때문이다.

따라서 이럴 때 는 두 번째 줄에 연산결과를 강제로 형변환한 다음 c에 입력하는 형태로 하여야 한다.


float c = (float)a/b;


Trackback 0 Comment 0