검수요청.png검수요청.png

"C 명령어"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글
(선언문)
54번째 줄: 54번째 줄:
  
 
===선언문===
 
===선언문===
코드에서 사용하는 변수를 신고하기 위해서 사용한다. 모든 변수는 사용하기 전에 반드시 선언되어야 하며 컴파일러는 이 선언문을 보고 변수를 만든다. 변수를 선언할 때는 변수이름 앞에 int와 같은 데이터 형을 지정하며 초기값을 설정할 수도 있다. int num; 또는 int num = 10;과 같이 사용한다.<ref name="자료2"> 담담, 〈[https://blog.naver.com/pisibook/221506351101 2.4 C 명령문의 종류(C 언어)]〉, 《네이버 블로그》, 2019-04-05</ref>
+
코드에서 사용하는 변수를 신고하기 위해서 사용한다. 모든 변수는 사용하기 전에 반드시 선언되어야 하며 컴파일러는 이 선언문을 보고 변수를 만든다. 변수를 선언할 때는 변수이름 앞에 int와 같은 데이터 형을 지정하며 초기값을 설정할 수도 있다. int num; 또는 int num = 10;과 같이 사용한다.<ref name="자료2"> 담담, 〈[https://blog.naver.com/pisibook/221506351101 2.4 C 명령문의 종류(C 언어)]〉, 《네이버 블로그》, 2019-04-05</ref>변수 선언의 기본형에는 정수형, 문자형, 실수형, 열거형, void형 등이 있다.
 +
====정수형====
 +
C/C++에서 정수형 변수는 정수를 처리하기 위한 변수이다. 정수형 변수를 마이크로프로세서가 처리할 때, 부호와 숫자범위를 결정해야 한다. C/C++로 작성 된 코드는 결국 해당 마이크로프로세서의 기계어 코드로 변환하는데, 마이크로프로세서의 숫자체계(ALU 등 이용)를 사용하기 때문이다.
 +
숫자 범위는 2진수의 몇비트로 처리할 것인가를 결정 해야 한다. 이것은 곧 정수 처리 범위를 결정된다. 마이크로프로세서 내에서 레지스터와 ALU의 비트수가 결정 되었기 때문이다. 숫자 범위는 char, int, short, long을 사용해 변수선언을 하면 된다. 부호는 unsigned을 이용한다. 음수와 양수를 표현하기 위해서는 signed과 unsigned를 사용한다. 음수를 사용할 경우 보통 signed를 생략 한다. int나 char 만을 선언하면 양수와 음수를 같이 사용한다. 양수 만을 사용하려면 unsigned 붙이면 된다.
 +
CPU에서 음수는 2진수 체계중에 논리 공학의 2의보수를 사용한다. unsigned를 사용할 경우는 정해진 비트 수 내에서 이진수와 같다. 그러나 음수를 사용할 경우, 양수와 음수는 2의 보수 체계를 사용하여 숫자를 배치 한다. 이것은 연산자로 코딩 될 때 수월하게 숫자를 표현하거나 계산할 수 있기 때문이다.
 +
정수 연산은 CPU 내의 ALU에서 처리 한다. 4칙연산, 논리연산, 비트 쉬프트 등의 연산이 가능하다. 많은 CPU의 경우 부동소수점 연산(FPU) 모듈이 없지만, 정수형 연산은 모든 CPU가 가능하다. 정수는 정수형 ALU을 사용하여 연산한다. 경우에 따라 저속의 8비트 CPU는 나누기 기계어 코드가 없지만, 현재의 CPU 들은 거의 모두 4칙연산을 할 수 있다. 보통의 CPU ALU는 정수형의 나누기의 연산 시, 나누기 기계어 코드가 실행되고 몫과 나머지로 분리하여 레지스터에 저장함으로써 결과를 얻는다.<ref name="위키">C 언어 정수형 변수 위키백과 - https://ko.wikipedia.org/wiki/C_%EC%96%B8%EC%96%B4_%EC%A0%95%EC%88%98%ED%98%95_%EB%B3%80%EC%88%98</ref>
 +
 
 +
====실수형====
 +
====문자형====
 +
====부호지정====
  
 
===연산문===
 
===연산문===

2020년 9월 11일 (금) 10:14 판

C 명령어C 언어에서 사용하는 명령어이다. C언어에서 사용 가능한 명령문의 종류는 크게 전처리 지시어, 선언문, 연산문, 함수, 제어문의 5가지로 나눌 수 있다.

명령문

전처리 지시어

전처리 지시어는 #으로 시작하며 컴파일러에 포함되어있는 전처리기에게 전달하는 정보다. 이 지시어는 코드에서 사용하는 함수에 관한 정보를 제공하는 역할을 한다. #include <stdio.h>가 대표적인 예다.[1]

종류

#include

파일 처리를 위한 전처리문으로 C언어로 작성된 특정파일을 소스에 포함시키기 위해 사용하며 크게 두가지분류로 나눌 수 있다. 첫번째는 angle bracket(<>) 사이에 파일명을 넣어서 사용하는 방법이다. 파일명은 C에서 제공하는 표준 헤더파일들이 있는 디렉토리에서 그 파일을 찾아 사용하게 된다.

#include <stdio.h>

두번째는 quotes("") 사이에 파일명은 사용자가 C 언어로 정의한 파일을 기본경로에서 찾아 사용하게 된다. 파일 경로는 전체 경로를 작성해도 상관없다.[2]

#include "test.h"
#define

상수값을 지정하기 위한 예약어로 매크로라고 부르며 사용문법은 #define [매크로명] [실제값] 이다. 단순히 매크로명을 실제 값을 치환해주는 역할을 한다. 함수/변수명과 구분하기 위해 주로 대문자로 매크로 명을 쓰는 것이 관례이다. function 이나 subroutine과는 다르게 분기하여 실행되는 것이 아니라, define 에 의해 정의된 코드가 해당 위치로 치환된다. 이는 함수 호출과 관련한 오버헤드를 줄일 수 있어 어느정도 속도의 향상을 꾀할 수 있지만, 최종 실행파일의 크기는 커지게 된다.

사용법은 크게 2가지로 단순하게 매크로명을 대응 문자열 또는 상수로 치환하는 방법과 매크로 함수를 만들어 사용하는 방법 두가지가 있다.

#define CARNAME "porsche"
       printf(CARNAME); //단순하게 매크로 명을 치환

#deinfe PAYCALC(a, b) ((a) * (b) * 4000)
       printf("My Pay? : %d\n",PAYCALC(8,30)); //매크로 함수 제작 후 사용

define 사용시, 문자열이나 문자 정수 속에는 치환이 발생하지 않으며, 매크로 함수 사용시 인자를 정의하는 괄호를 매크로함수명 다음에 공백을 두지 않고 바로 사용해야 한다. 일반적으로 deinfe의 사용은 프로그램의 명확성과 이식성을 증대시켜준다.[2]

#undefine

'#define'으로 이미 정의된 매크로를 무화화한다.

#define ADD(a,b)(a+b)
#undef ADD(a,b)

'#undef' 으로 무효화된 메크로를 재사용을 할경우에는 'undefined symbol' 에러처리된다.[2]

#if, #else, #elif, #endif

조건부 컴파일을 위해서 사용되는 전처리문이다. 특정한 조건이 성립될때나 또는 성립되지 않을때에만 지정된 범위내의 문장을 컴파일하거나 또는 그냥 무시하고 컴파일하지 않는것을 말한다. 조건부 컴파일의 주목적은 프로그램의 호환성을 높이는데 있다. C에서는 0(Zero)이 아닌 정수는 모두 true(참) 값으로 간주한다.[2]

#ifdef, #ifndef

매크로(#define) 이 정의 되어 있는지를 판단한다.

#ifdef [매크로명]
#ifndef[매크로명]

'#ifdef'는 if define 의 약자로 매크로가 정의되있을 경우 참으로, 정의가 되어있지 않을경우 거짓으로 평가한다. #ifdef 는 if not define의 약자로 매크로가 정의되어있을 경우 거짓으로, 정의되어 있지 않을경우 참으로 평가한다.[2]

#error

소스 라인에 직접 에러 메세지를 출력한다. 전처리기가 #error 문을 만나면 그 즉시 컴파일을 중단하고 다음과 같은 에러 메시지를 출력한다.[2]

ERROR : XXXXX.c ########: Error directive: 내용

'XXXXX.c'는 현재 컴파일 중인 파일명이며 '#######'은 전처리기가 #error문을 만난 시점에서의 행 번호이다.

#line

이 명령은 소스 코드의 행번호를 지정하기 위한 것으로 주로 컴파일러에 의해 미리 정의된 __LINE__과 함께 사용된다. C에서는 베이식과 같은 행번호를 사용하지 않는다. 하지만 디버깅 시 행번호를 미리 알고 있으면 편한 경우가 있다. 예를 들어 어떤 표현들이 있고, 그 표현들 중의 어딘가에 잘못된 부분이 있는 것 같은데 정확히 그 표현이 있는 행을 찾지 못한다면 "#line"을 사용함으로써 그 일을 보다 수월하게 할 수 있게 된다.[2]

#pragma

컴파일 옵션의 지정을 하는데 사용한다. 컴파일러 작성자에 의해서 정의된 다양한 명령을 컴파일러에게 제공하기 위해서 사용되는 지시어이다. 컴파일러의 여러가지 옵션을 명령행 상에서가 아닌 코드상에서 직접 설정한다. #pragma는 함수의 바로 앞에 오며, 그 함수에만 영향을 준다. 터보C는 9개의 #pragma문을 지원하고 있다.[2]

선언문

코드에서 사용하는 변수를 신고하기 위해서 사용한다. 모든 변수는 사용하기 전에 반드시 선언되어야 하며 컴파일러는 이 선언문을 보고 변수를 만든다. 변수를 선언할 때는 변수이름 앞에 int와 같은 데이터 형을 지정하며 초기값을 설정할 수도 있다. int num; 또는 int num = 10;과 같이 사용한다.[1]변수 선언의 기본형에는 정수형, 문자형, 실수형, 열거형, void형 등이 있다.

정수형

C/C++에서 정수형 변수는 정수를 처리하기 위한 변수이다. 정수형 변수를 마이크로프로세서가 처리할 때, 부호와 숫자범위를 결정해야 한다. C/C++로 작성 된 코드는 결국 해당 마이크로프로세서의 기계어 코드로 변환하는데, 마이크로프로세서의 숫자체계(ALU 등 이용)를 사용하기 때문이다. 숫자 범위는 2진수의 몇비트로 처리할 것인가를 결정 해야 한다. 이것은 곧 정수 처리 범위를 결정된다. 마이크로프로세서 내에서 레지스터와 ALU의 비트수가 결정 되었기 때문이다. 숫자 범위는 char, int, short, long을 사용해 변수선언을 하면 된다. 부호는 unsigned을 이용한다. 음수와 양수를 표현하기 위해서는 signed과 unsigned를 사용한다. 음수를 사용할 경우 보통 signed를 생략 한다. int나 char 만을 선언하면 양수와 음수를 같이 사용한다. 양수 만을 사용하려면 unsigned 붙이면 된다. CPU에서 음수는 2진수 체계중에 논리 공학의 2의보수를 사용한다. unsigned를 사용할 경우는 정해진 비트 수 내에서 이진수와 같다. 그러나 음수를 사용할 경우, 양수와 음수는 2의 보수 체계를 사용하여 숫자를 배치 한다. 이것은 연산자로 코딩 될 때 수월하게 숫자를 표현하거나 계산할 수 있기 때문이다. 정수 연산은 CPU 내의 ALU에서 처리 한다. 4칙연산, 논리연산, 비트 쉬프트 등의 연산이 가능하다. 많은 CPU의 경우 부동소수점 연산(FPU) 모듈이 없지만, 정수형 연산은 모든 CPU가 가능하다. 정수는 정수형 ALU을 사용하여 연산한다. 경우에 따라 저속의 8비트 CPU는 나누기 기계어 코드가 없지만, 현재의 CPU 들은 거의 모두 4칙연산을 할 수 있다. 보통의 CPU ALU는 정수형의 나누기의 연산 시, 나누기 기계어 코드가 실행되고 몫과 나머지로 분리하여 레지스터에 저장함으로써 결과를 얻는다.[3]

실수형

문자형

부호지정

연산문

사칙연산자(+, -, *, /)나 할당연산자(=)와 같은 연산자를 사용하여 계산을 하고 값을 할당하는 명령문이다. 연산문은 가장 많이 사용하는 명령문 형식이며, i = i +1; 이나 num3 = num1 - num2; 와 같은 명령문이 연산문이다.[1]

함수

함수는 뒤에 괄호가 있으며 그 괄호 안에 인수를 기술할 수 있다. 우리가 사용했던 printf() 함수가 대표적인 예다. C 언어가 제공하는 이런 함수(내장함수)를 사용할 수도 있고, 내가 직접 함수를 만들어서 사용할 수도 있다.[1]

제어문

제어문에는 조건에 따라 명령문의 실행여부를 결정하는 조건문과 일정한 명령문들을 반복해서 실행하는 반복문이 있다. 조건문은 if, switch 등이 있으며, 반복문은 for, while, do while 등이 있다.[1]

각주

  1. 1.0 1.1 1.2 1.3 1.4 담담, 〈2.4 C 명령문의 종류(C 언어)〉, 《네이버 블로그》, 2019-04-05
  2. 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 hsyun, 〈전처리(preprocessor)〉, 《티스토리》, 2010-03-22
  3. C 언어 정수형 변수 위키백과 - https://ko.wikipedia.org/wiki/C_%EC%96%B8%EC%96%B4_%EC%A0%95%EC%88%98%ED%98%95_%EB%B3%80%EC%88%98

참고자료


같이 보기


  검수요청.png검수요청.png 이 C 명령어 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.