블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아

카테고리

분류 전체보기 (176)
잡담 (1)
IT 기기-리뷰&뉴스 (7)
리뷰 - 도서 (1)
리뷰 - 영상 (0)
리뷰 - 그림/음악 (1)
내장형 하드웨어 (163)
Total630,110
Today189
Yesterday195

- 컴파일러 설치

NASM 2.10rc4 (The Netwide Assembler - http://nasm.us/ )

⇒ C:\windows → NASM.exe 복사

⇒ cmd → nasm(실행)


MASM (microsoft, 80x86 assembler) → setup(설치)

⇒ C:\jbpub\Detmer\software

⇒ 환경변수 → path → ;C:\jbpub\Detmer\software(붙여넣기)

⇒ cmd → ml(실행)


둘다 assembler 를 intel cpu의 형으로 바꾸어 준다.

⇒ 컴파일시 .o 파일을 만들어 낸다.(링크를 만들어 내지는 않는다.)




- 함수

// 실인수와 형식인수의 자료형이 일치하지 않을 경우

#include<stdio.h>

float average(short n1,short n2);


int main()

{

        int num1, num2;

        float avrg;


        printf("Please enter an integer: ");

        scanf("%d",&num1);

        printf("Please enter an integer: ");

        scanf("%d",&num2);

        avrg=average(num1,num2); // 자료형이 일치하지 않으므로 warning 발생

        printf("The average of %f and %f is %6.3f\n",num1,num2,avrg);


        return 0;

}

float average(short n1, short n2)

{

        float avg;

        avg=(float)(n1+n2)/2;

        return (avg);

}

⇒ 실행결과

        

 

⇒ avrg = average(num1, num2); // warning 발생 (자료형이 일치하지 않기 때문에)

gcc는 버전에 따라 틀리지만 warning을 잘 표시하지 않는 경우가 있다. 이럴 때는 옵션을 적용하면 warning을 볼 수 있다.

 → gcc -Wall -o p6_2 p6_2.c

 → -Wall : all warning


⇒ warning을 없에기 위해 casting 하면,

 → avrg = average((short)num1,(short)num2);

    로 바꾸게 되면 자료형이 일치하게 되어 warning이 사라지게 된다.



// 같은 이름의 지역변수가 두 함수에서 사용되는 프로그램의 예


#include<stdio.h>

int plus(int first, int second); // plus() 함수 선언

int minus(int first, int second); // minus() 함수 선언


int main()

{

        int result;

        result = plus(27,24);

        printf("the sum of two number is %d\n",result);

        result = minus(27,24);

        printf("the difference of two number is %d\n",result);

        

        return 0;

}

int plus(int first, int second) // plus 함수 정의

{

        int result;

        result=first+second;

        return (result);

}

int minus(int first, int second) // minus 함수 정의

{

        int result;

        result = first -second;

        return (result);

}

⇒ 실행결과         

⇒ 함수 int plus의 형태는 plus는 int 형을 반드시 반환한다는 뜻

⇒ result(result);

 → 반환자료형과 타입 일치, 반환자료형이 있으면 return 해줘야 한다.

 → result 반환.

⇒ main() 함수, plus() 함수, 그리고 minus() 함수에서 선언된 지역변수 result는 이름은 같지만 서로 무관하다. 변수 result는 선언된 함수 내에서만 통용된다. plus() 함수에서 선언된 result는 plus() 함수 내부에서만 통용되며, minus() 함수에서는 보이지 않는다. minus() 함수에서 선언된 result도 마찬가지이다. plus() 함수의 인수로 선언된 first와 second는 minus() 함수의 인수로 선언된 first second와는 무관하게 적용한다.




// 양의 정수를 입력받아 그 수만큼 별표를 출력한다. 입력값이 50 이상이면 50개의 별표만 출력한다. 입력값이 0이면 프로그램은 종료된다. 입력값이 음수일 경우 다시 입력할 수 있게 작성되었다.


#include<stdio.h>


void printstar(int n);

int checknum (int n);

int getnum();


int main()

{

        int num;

        num=getnum();

        while(num!=0)

        {

                num=checknum(num);

                printstar(num);

                num=getnum();

        }

        return 0;

}

int getnum()

{

        int num;

        printf("Enter a number <0 to quit> : ");

        scanf("%d", &num);

        while(num<0) // 음수값을 입력할 경우 재 입력.

        {

                printf("Enter a positive number <0 to quit> : ");

                scanf("%d",&num);

        }

        return (num);

}

int checknum(int n)

{

        if (n>50)

        {

                return (50);

        }

        else return (n);

}

void printstar(int n)

{

        while (n--)

        {

                putchar('*');

        }

        putchar('\n');

        return ;

}

⇒ 실행결과

        


※ 각 함수의 메모리 값의 변화를 살펴보면 main 함수의 num 은 프로그램이 끝날 때 까지 살아있고 getnum과 checknum 은 실행 후 메모리에 값이 사라진다.

Posted by 동화다아아

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함