printf

이전에 보았듯이 문자열을 출력하는 함수입니다. printf의 f는 formatted(서식이 지정된)을 의미합니다. 따라서 printf는 서식이 지정된 형태의 출력이라는 뜻이 담겨있습니다. 

특수문자를 출력하고 싶을 경우 아래의 방법을 통해 가능합니다.

특수문자 

의미 

\a 

경고음 

\b 

백스페이스 

\f 

폼 피드(form feed) 

\n 

개 행(new line)/줄바꿈 

\r 

캐리지 리턴(carriage return) 

\t 

수평 탭 

\v 

수직 탭 

\' 

작은 따옴표 

\" 

큰 따옴표 

\? 

물음표 

\\ 

역슬래쉬 


이와 같은 방법으로 특수문자를 출력할 수 있습니다. 그러면 변수값을 출력할때 정수, 실수, 몇 진수냐에 따라 출력 서식문자 또한 지정해줘야 합니다.

서식문자의 종류와 그 의미

서식문자 

출력 대상(자료형) 

출력 형태 

%d 

char, short, int 

부호 있는 10진수 정수 

%ld 

long 

부호 있는 10진수 정수 

%lld 

long long

부호 있는 10진수 정수 

%u 

unsigned int 

부호 없는 10진수 정수 

%o 

unsigned int 

부호 없는 8진수 정수 

%x, %X 

unsigned int 

부호 없는 16진수 정수 

%f 

float, double 

10진수 방식의 부동소수점 실수 

%Lf 

long double 

10진수 방식의 부동소수점 실수 

%e, %E 

float, double 

e 또는 E 방식의 부동소수점 실수 

%g, %G 

float, double 

값에 따라 %f와 %e 사이에서 선택 

%c 

char, short, int 

값에 대응하는 문자 

%s 

char * 

문자열 

%p 

void * 

포인터의 주소값 

(8진수, 16진수을 출력할 경우 %o, %x에 #를 넣어주면 출력됩니다.. %#o, %#x)

(출력값의 필드 폭을 지정하고자하면 %와 서식문자 사이에 원하는 값을 입력해주면 가능합니다.)


scanf도 printf와 동일한 방법으로 사용합니다.


'배울 것들 > 언어' 카테고리의 다른 글

C프로그래밍 7/? 조건문  (0) 2018.11.19
C프로그래밍 6/? 반복문  (0) 2018.11.19
C프로그래밍 4/? 자료형  (0) 2018.11.11
C프로그래밍 3/? 데이터  (0) 2018.11.10
C프로그래밍 2/? (변수와 연산자)  (0) 2018.11.08

자료형

데이터를 표현하는 기준입니다. 때문에 변수, 상수도 자료형에 근거합니다.

자료형 

크기(Byte) 

표현범위 

 소수점 이하 정밀도

정수형 

char 

-128이상 +128이하 

short 

-32,768이상 +32,768 

int 

-2,147,483,648이상 +2,147,483,648이하 

long 

-2,147,483,648이상 +2,147,483,648이하 

long long 

-9,223,372,036,854,775,808이상

+9,223,372,036,854,775,808이하 

실수형 

float 

 

6자리 

double 

 

15자리 

long double 

8~ 

double 이상의 표현범위 

18자리 

하지만 자료형 별 크기를 정확히 제한하고 있지 않습니다. 따라서 자료형 별 크기는 컴파일러마다 차이를 보입니다. 그러면 이렇게 많은 수의 자료형을 제공하는 이유는 다음과 같습니다.

  • 데이터의 표현방식이 다르므로, 최소 둘(정수, 실수 1개씩) 이상의 자료형이 필요합니다.
  • 메모리 공간의 적절한 사용을 위해서 다양한 크기의 자료형이 필요합니다.

sizeof 연산자
메모리 공간에서 소모하는 메모리의 크기를 바이트 단위로 계산해서 반환하는 sizeof라는 연산자가 존재합니다. 그리고 이 연산자의 피연산자로는 변수와 상수뿐만 아니라, 자료형의 이름도 올 수 있기 때문에, 이 연산자를 이용해서 자신이 사용하는 컴파일러의 자료형 별 바이트 크기도 확인할 수 있습니다.

int main(void)
{
int num = 10;
int sz1 = sizeof(num);    // 변수 num의 크기를 계산해 sz1을 초기화
int sz2 = sizeof(int);      // 자료형 int의 크기를 계산해 sz2를 초기화
}


사용법은 이러합니다. sizeof로 char, short형의 크기를 출력해보면 4바이트로 나올 수도 있습니다. 이는 일반적으로 CPU가 처리하기에 가장 적합한 크기의 정수 자료형을 int로 정의하기 때문입니다. 따라서 int형 연산의 속도가 다른 자료형의 연산속도에 비해 동일하거나 더 빠릅니다.

대신 데이터의 양이 많아서 연산속도보다 데이터의 크기를 줄이는 것이 더 중요한 데이터들의 경우 char, short형 변수가 유용하게 사용됩니다.


unsigned

  • 정수 자료형의 이름 앞에만 unsigned를 붙일 수 있습니다.
  • unsigned가 붙으면, MSB도 데이터의 크기를 표현하는데 사용이 돼 표현할 수 있는 값이 0 이상의 범위로 두 배가 됩니다.

---------------------

문자의 표현 방식과 문자를 위한 자료형


아스키(ASCII) 코드

수자를 이용해서 문자를 표현하도록 하려면 숫자를 문자에 연결시키는 것이 유일한 방법입니다. 즉, 미리 약속해두는 것입니다. 알파벳과 일부 특수문자를 포함해 총 128개의 문자로 이루어져 있습니다.

코드를 입력하면서 일일이 값을 찾아보기보단 작은 따옴표를 사용해 문자를 표현합니다.


int main(void)

{

char ch1 = 'A';

char ch2 = 'C';

}


문자를 사용할 때는 char형 변수를 사용합니다. 그 이유는 아스키 코드 값은 0이상 127이하로 메모리의 효율적 사용을 위해서기도 하지만 char가 문자의 표현을 위해서 정의된 자료형이기 때문입니다.


-----------------

상수

이름이 의미하듯이 변경이 불가능한 데이터를 뜻합니다. 그리고 상수의 경우 접미사를 이용해 상수를 표현할 수 있습니다.

 자료형

접미사 

자료형 

예 

정수형 

unsigned int 

unsugned int n = 1025U 

long 

long n = 2467L 

UL 

unsigned long 

unsigned long n = 3456UL 

LL 

long long 

long long n = 5678LL 

ULL 

unsigned long long 

unsgned long long n = 8979ULL 

실수형 

float 

float f = 3.15F 

long double 

long double f = 5.789L 

참고로, 위의 접미사들은 대소문자를 구분하지 않으므로 눈에 잘 띄도록 상황에 맞게 대소문자를 선택하면 됩니다.


지금까지의 상수와 달리 값을 변경할 수 없는 상수도 존재합니다. 이를 심볼릭 상수 : const 상수라 합니다. 변수 선언 시 const 선언만 추가하면 됩니다. 단, 이는 상수이므로 선언과 동시에 초기화를 해야합니다.


-----------------

자료형 변환

자료형의 변환이라는 것은 데이터의 표현방식을 바꾸는 것입니다. 이는 두 종류로 나눌 수 있습니다.

  • 자동 형 변환(묵시적 형 변환)
  • 강제 형 변환(명시적 형 변환)
대입연산의 전달과정에서 자동 형 변환이 발생합니다. 예를 들어 double형읭 변수에 int형 정수를 입력하면 자동으로발생합니다. 하지만 반대로 실수형 데이터를 정수형 데이터로 변환하면 이 과정에서 소수부의 손실이 발생합니다. 그러므로 산술연산이 진행할 경우 데이터 손실이 발생하지 않은 쪽으로 형 변환이 진행됩니다.

int ▶ long ▶ long long ▶ float ▶ double ▶ long double (char, short의 경우 둘 다 int형 정수로 형 변환이 진행돼 생략되었습니다.)

지금까지 자동 형 변환의 경우를 확인했습니다. 강제 형 변환의 경우 사용자가 강제로 진행하는 경우를 말합니다. 다음과 같이 사용할 수 있습니다.

int main(void)
{
int num1 = 3;
double num2 = 2.5 * (double)num1;    // 이와 같이 소괄호를 이용해 강제 형 변환을 진행할 수 있습니다.
}


데이터의 표현단위

'비트'는 컴퓨터가 표현하는 데이터의 최소단위로 2진수 값 하나를 저장할 수 있는 메모리의 크기를 뜻하는 단위이다.


 1비트

 

 

 

 

 

 

1바이트 

 

 

 

 

 

 

 

2바이트

 0

0


0과 1을 표현하는 각각의 작은 사각형은 메모리의 최소 단위인 비트를 의미한다. 그리고 8개의 비트가 모여서 1바이가 됨을 보이고 있다.



데이터 표현 방식

10진수 

2진수 

8진수 

16진수 

10 

11 

100 

101 

110 

111 

1000 

10 

1001 

11 

10 

1010 

12 

11 

1011 

13 

12 

1100 

14 

13 

1101 

15 

14 

1110 

16 

15 

1111 

17 


C언어는 10진수 이외에 8진수와 16진수의 데이터 표현도 허용을 한다. 따라서 8진수, 16진수의 표현방식이 정해져있다.


int num1 = 10;     // 특별한 선언이 없는 10진수의 표현

int num2 = 0xA    // 0x로 시작하면 16진수로 인식

int num3 = 012    // 0으로 시작하면 8진수로 인식


-------------


표현방식

-정수

C언어에서 보통 하나의 정수를 4바이트로 표현합니다. 하지만 4바이트면 32비트로 너무 길어 1바이트로 설명하겠습니다.

  • 정수의 가장 왼쪽에 존재하는 비트는 부호비트입니다.

+1이라는 값을 저장할때 다음과 같이 저장합니다.


↓부호(+,-)의 표현

양수라면 0, 음수라면 1을 저장하여 부호를 표시합니다. 그래서 이를 가리켜 MSB(Most Significant Bit)라 칭합니다.

음의 경우 아래와 같이 1의 보수를 취한 후 1를 더해주어야하며, 이 과정을 2의 보수법이라 합니다.

[정수 +5] 

 1의 보수를 취한다.

 

1를 더한다. 

[정수 -5] 


-실수

부호

 1

 1



C에서의 실수 표현은 이와 같이 합니다. 하지만 넓은 범위의 실수를 표현할 수 있지만, 실수의 표현에 오차가 존재합니다. 예를 들어 0을 표현하고자해도 2의 n승은 절대로 0이 될 수 없기 때문이다. 이렇듯 컴퓨터는 우리가 표현하고자 하는 실수의 값을 정확하게 표현하는 것이 아니라, 아주 가까운, 문제가 없을 만큼의 근사치를 통해서 실수를 표현하게 됩니다. 따라서 실수를 표현하는데 있어서 오차가 존재하는 것은 당연한 일이며, 이런 오차를 부동 소수점 오차라 합니다.


-----------


비트 연산자

메모리 공간의 효율성을 높이고 연산의 수를 줄이는 요인이 되기도 한다. 

연산자 

기능 

결합방향 

비트단위로 AND 연산을 한다.

ex) num1 & num2 

→ 

비트단위로 OR 연산을 한다.

ex) num1 | num2 

→ 

비트단위로 XOR 연산을 한다.

ex) num1 ^ num2; 

→ 

단항 연산자로서 피연산자의 모든 비트를 반전시킨다. 

← 

<< 

피연산자의 비트 열을 왼쪽으로 이동시킨다.

ex) num<<2;    // num은 변화 없음, 두 칸 왼쪽 이동 결과만 반환 

→ 

>> 

피연산자의 비트 열을 오른쪽으로 이동시킨다.

ex) num>>2;    // num은 변화 없음, 두 칸 오른쪽 이동 결과만 반환 

→ 


<< 연산자와 >> 연산자는 '비트 이동(shift) 연산자'라해서 비트 연산자와는 성향이 조금 다릅니다. 하지만 흔히 비트 연산자의 범주에 포함시켜서 이야기하기 때문에 함께 정리합니다.


변수

수학에서 약속된 기호로 연산을 하듯 C언어에서도 약속된 연산 기호가 있습니다. 또한 연산된 값을 저장하기 위한 수단으로 변수를 제공합니다. 수학에서는 정해지지 않은 임의의 값을 대입할 수 잇는 문자를 가리켜 변수라 합니다. 이와 유사한 의미라 생각하면 됩니다. 따라서 변수을 하나 만들면, 그 변수의 이름을 통해서 값의 저장 및 참조가 가능하고, 또 저장된 값의 변경도 가능합니다.

선언하는 방법을 보면

int main(void)

{

int num;             // num이라는 이름의 변수 선언

num = 20;          // num에 20 저장. 처음으로 변수에 값을 지정하는 걸 변수의 초기화라 한다. 

}


이 문장이 의미하는 바는 다음과 같습니다.

  • int      정수의 저장이 가능한 메모리 공간을 할당합니다.
  • num    그 메모리 공간의 이름을 num으로 합니다.

C언어에서 = 기호는 값의 대입을 뜻합니다. 이를 가리켜 대입 연산자라 하며, 대입 연산자의 오른편에 오는 값을 왼편에 오는 변수에 저장하는 형태로 사용이 됩니다.


int num1 = 30;                    // 이처럼 보통 선언과 동시에 초기화

int num2 = 2, num3 = 3;       // 두 개의 변수를 선언 및 초기화도 가능


이처럼 변수 선언 후 초기값을 지정하지않으면 쓰레기값(아무런 의미가 없는 값)이 저장됩니다. 따라서 변수 선언과 동시에 0으로 초기화한 다음, 의미있는 값을 저장하기도 합니다.


변수 선언 시 주의할 사항이 있습니다. 중괄호 내에 변수를 선언할 경우, 변수의 선언문은 중괄호의 앞부분에 위치해야 합니다. 만약 변수 선언 중간에 다른 문장이 들어가면 컴파일 에러가 발생합니다.


int num1;

num1 = 10;    //변수 선언이 아님

int num2;       //컴파일 에러 발생 지점

num2 = 0;


또 다른 주의 사항은 변수의 이름에 관한 것입니다. 다음은 변수의 이름을 지을 때 적용되는 규칙입니다.

  • 변수의 이름은 알파벳, 숫자, 언더바( _ )로 구성합니다.(특수문자 사용불가)
  • C언어는 대소문자를 구분합니다. 따라서 변수 Num과 변수 num은 서로 다른 변수입니다.
  • 변수의 이름은 숫자로 시작할 수 없고, 키워드도 변수의 이름으로 사용할 수 없습니다.
  • 이름 사이에 공백이 삽입될 수 없습니다.

이러한 규칙을 잘 지켜야합니다. 따라서 변수의 이름은 변수의 역할에 어울리는 의미 있는 이름으로 짓는 것이 좋습니다.


지금까지 변수의 선언과 활용에 대해 설명하였는데, 이런 변수는 다음과 같이 두 가지 부류로 나뉩니다.

  • 정수형 변수    정수의 저장을 목적으로 선언된 변수. 크기에 따라 char, short, int, long형 변수로 나눔
  • 실수형 변수    소수점 이하의 값을 지니는 실수의 저장을 목적으로 선언된 변수. 크기에 따라 float형, double형 변수로 나눔

정수냐, 실수냐에 따라서 값이 메모리 공간에 저장 및 참조되는 방식이 다르기 때문에 이렇게 나뉩니다.


-----------


다양한 연산자

  • 대입 연산자(=)와 산술 연산자

 연산자

 기능 

 기능 

 =

 연산자 오른쪽에 있는 값을 연산자 왼쪽에 있는 변수에 대입한다.

ex) num = 20; 

 ← 

 +

 두 피연산자의 값을 더한다.

ex) num = 1 + 2; 

 → 

 -

왼쪽의 피연산자 값에 오른쪽의 피연산자 값을 뺀다.

ex) num = 4 - 3;

  → 

*

두 피연산자의 값을 곱한다.

ex) num = 4 * 3; 

  → 

 /

왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눈다.

ex) num = 7 / 3; //결과 2

  → 

왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눴을 때 얻게 되는 나머지를 반환한다.

ex) num = 7 % 3; //결과 1 

  → 

  • 복합 대입 연산자

다른 연산자와 합쳐진 형태의 대입 연산자를 칭합니다.

*=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=

이 연산자는 기존의 코드를 줄일 때 사용할 수 있습니다.

ex) a = a + b >> a += b


  • 부호연산의 의미를 갖는 +, - 연산자
+, - 는 이항 연산자로서 덧셈과 뺄셈을 의미하지만, 피연산자가 하나인 단항 연산자로서 부호를 뜻하기도 한다. 이는 +1, -4같이 숫자 앞에 붙는 부호를 뜻하는 것입니다. 참고로, 부호 연산자가 삽입된 문장과 복합 대입 연산자가 삽입된 문장을 혼동하는 경우가 있습니다. 다음과 같이 연산자와 피연산자 사이에 공백을 삽입하지 않는 경우에는 더욱 혼동하기가 쉬우므로 공백을 두는 것이 혼란을 최소화하는 방법입니다.
ex)  num1=-num2;    >>    num1 = -num2;
num1-=num2;    >>    num1 -= num2;

  • 증가, 감소 연산자

연산자

기능

결합방향

++num

값을 1 증가 후, 속한 문장의 나머지를 진행(선 증가, 후 연산)

ex) val =++num;           //num = 12일 경우 val 13

num++

속한 문장을 먼저 진행한 후, 값을 1 증가(선 연산, 후 증가)

ex) val = num++;          //num = 12일 경우 val 12

--num

값을 1 감소 후, 속한 문장의 나머지를 진행(선 감소, 후 연산)

ex) val =--num;            //num = 12일 경우 val 11

num--

속한 문장을 먼저 진행한 후, 값을 1 감소(선 연산, 후 감소)

ex) val = num--;           //num = 12일 경우 val 12

  • 관계 연산자(<, >, ==, !=, <=, >=)

연산자 

기능 

결합방향 

 <

ex) n1 < n2

n1이 n2보다 작은가? 

ex) n1 > n2

n1이 n2보다 큰가? 

→ 

==

ex) n1 == n2

n1과 n2가 같은가? 

→ 

!= 

ex) n1 != n2

n1과 n2가 다른가? 

→ 

<= 

ex) n1 <= n2

n1이 n2보다 작거나 같은가? 

→ 

>= 

ex) n1 >= n2

n1이 n2보다 크거나 같은가?


위 관계 연산자들은 조건을 만족하면 1, 만족하지 않으면 0을 반환합니다. 그런데 여기서 말하는 1은 참(true. C언어는 0이 아닌 모든 값을 참으로 간주합니다.)을, 0은 거짓(false)을 의미하는 대표숫자입니다.


  • 논리 연산자(&&, ||, !)
AND(논리곱), OR(논리합), NOT(논리부정)

연산자 

기능 

결합방향 

&& 

ex) A && B

A와 B 모두 '참'이면 연산결과로 '참' 반환(논리AND) 

→ 

|| 

ex) A || B

A와 B 둘 중 하나라도 '참'이면 연산결과로 '참'을 반환(논리 OR) 

→ 

ex) !A

A가 '참'이면 '거짓', A가 '거짓'이면 '참'을 반환(논리 NOT) 

→ 

  • 콤마 연산자( , )
둘 이상의 변수를 동시에 선언하거나, 둘 이상의 문장을 한 행에 삽입하는 경우에 사용되는 연산자입니다. 뿐만 아니라, 둘 이상의 인자를 함수로 전달할 때도 인자의 구분을 목적으로 사용됩니다. 즉, 콤마 연산자는 다른 연산자들과 달리, 연산의 결과가가 아닌 구분을 목적으로 사용됩니다.

  • 연산자의 우선순위와 결합방향

 순위

연산기호

연산자

결합방향

1위

()

함수호출

[]

인덱스

->

간접지정

.

직접지정

++(postifix)

--(postfix)

후위증가 및 감소

 2위

++(prefox)

--(prefix)

전위증가 및 감소

sizeof

바이트 단위 크기 계산

~

비트 단위 NOT

!

논리 NOT

-, +

부호 연산(음수와 양수의 표현)

&

주소 연산

*

간접지정 연산

3위

(casting)

자료형 변환

4위

*, /, %

곱셈, 나눗셈 관련 연산

5위

+, -

덧셈, 뺄셈

6위

 <<, >>

비트이동

7위

<, >, <=, >=

대소비교

8위

==, !=

동등비교

9위

&

비트 AND

10위

^

비트 XOR

11위

|

비트 OR

12위

&&

논리 AND

13위

||

논리 OR

14위

? :

조건연산

15위

=, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=

대입연산

16위

,

콤마연산



------


SCANF


scanf 함수를 이용하면 키보드로부터 다양한 형태의 데이터를 입력 받을 수 있는데, 이는 정수 입력에 대해서만입니다. 단, 입력형태를 다양하게 지정하는 것이 가능합니다. 예를 들어 10진수, 16진수 등의 형태로 저장이 가능합니다.

scanf함수의 서식문자의 수를 조절하여 입력 받는 '데이터의 수'를 조절할 수 있을 뿐만 아니라, 서식문자를 변경하여 입력 받는 '데이터의 유형(형태)'도 달리할 수 있습니다.

int main(void)

{

int num1, num2, num3;

scanf("%d %d %d", &num1, &num2, &num3);    //scanf 함수는 공백을 기준으로 데이터를 구분

}


-----


C언어의 표준 키워드


C언어의 문법을 구성하는 단어들을 가리켜 키워드라 합니다. 따라서 변수나 함수의 이름을 선정할 때 이를 피해야합니다. 즉, 프로그래머가 다른 용도로 사용할 수 없도록 제한한 단어들입니다.


auto 

_Bool 

break 

case 

char 

_Complex 

const 

continue 

default 

do 

double 

else 

enum 

extern 

float 

for 

goto 

if 

_Imaginary 

return 

restrict 

short 

signed 

sizeof 

static 

struct 

switch

typedef 

union 

unsigned 

volatile 

while 

 

 

 

 


다시 C언어를 공부하기로 했다. 우선 C언어하면 가장 많이 보는 '윤성우 열혈 C프로그래밍'이란 책으로 공부를 시작하겠습니다.
매일 하루 1-2 챕터를 공부할 계획이였지만....다른거 하느라 바쁘다고 매일 이루다 보니 벌써 1주일이 흘렀습니다. 더 지나기 전에 얼른 공부하려고 기록을 핑계삼아 시작합니다.

책의 내용 중 기억해야 된다 생각하는 내용을 짧게 요약해 기록할 예정입니다. 책 정리를 하면서 중간중간 인터넷에 올라오는 문제도 풀어볼 예정이나 이건 할 수 있을지 의문이긴 합니다.


기본구성

  • 함수의 정의 - 만들어진 함수, 실행이 가능한 함수를 일컬음. 적절한 입력과 그에 따른 출력이 존재하는 것
  • 함수의 호출 - 함수의 실행을 명령하는 행위
  • 인자의 전달 - 함수의 실행을 명할할 때 전달하는 입력 값
#include <stdio.h>
int main(void)
{
printf("Hello world! \n");
return 0;
}

프로그래밍 공부하면 가장 먼저 하는 hello world 예제입니다. 프로그램을 실행하면 예제에 보이는 main 함수가 가장 먼저 호출됩니다. 구성을 확인해보면

#include <stdio.h>

표준함수의 호출을 위해서 '헤더파일 선언'을 해야 합니다. 이 예제의 경우 stdio.h 헤더를 불러왔습니다. 이 문장은 /h로 끝나는 헤더파일을 포함하라는 의미의 선언입니다. 이는 아래에 나오는 printf의 표준함수를 호출하기 위해 사용되었습니다.

헤더파일의 선언은 소스파일의 맨 앞부분, main 함수 정의 이전에 와야 합니다.

int main(void)

즉, '출력의 형태가 int고 입력의 형태가 void인 main이라는 이름의 함수'란 의미입니다.


main함수의 중괄호 내에 존재하는 문장은 순차적으로 실행이 된다. 이 영역을 함수의 몸체라 칭합니다.

{

printf("Hello World! \n);

return 0;

}

몸체의 내부를 보면 각 문장 끝에 세미콜론( ; )이 붙어있다. 이는 문장의 끝을 표현하는 것이다. 하지만 조건문이나 반복문과 같은 컨트롤 문장에는 붙지 않습니다. 컨트롤 문장은 나중에 설명하겠습니다.

몸체를 좀 더 살표보면 c언어에서 제공하는 printf는 출력 표준함수를 사용했습니다. 사용 형태는 위의 내용을 보면 알 수 있듯 소괄호 안에 쌍따옴표내에 출력할 내용을 입력한 후 종료합니다.

마지막으로 return문이 나옵니다 이는 2가지 의미가 있습니다.

  • 함수를 호출한 영역으로 값을 전달(반환)
  • 현재 실행중인 함수의 종료
따라서 main함수를 호출한 영역으로 0을 전달하고 함수를 빠져 나오는 형태입니다. 그런데 main 함수의 종료는 프로그램의 종료로 이어지기 때문에 결국 프로그램이 종료가 됩니다.

--------

주석

주석(comment)은 프로그램 내에 삽입된 메모로 코드를 해석하는데 도움을 주는 내용이라 생각하시면 됩니다. 그리고 주석은 컴파일의 대상에서 제외가 되므로 프로그램의 실행결과에 영향을 미치지 않습니다.


주석의 표현법은 2가지가 있습니다.

블록 단위의 주석은 /* 으로 시작합니다. 그리고 끝은 */로 나타냅니다.

그리고 행 단위의 주석은 // 로 표현합니다.

ex)

/* 주석처리된 문장 */

/*

주석처리된 문장

주석처리된 문장

*/
// 주석처리된 문장

주석은 선택사항이 아닌 필수적으로 구성시켜주는게 좋습니다. 내가 만든 코드라 할지라도 시간이 지나면 모든 내용을 기억하기 힘드므로 꼭 남만을 위한 것이 아닌 나를 위한 것이기도 하기 때문에 습관화하는 것이 좋습니다.

-------

printf

printf 함수는 문자열 이외의 데이터를 다양한 형태로 출력하는 것이 가능합니다. 

printf("Hello World! \n");
printf("%d\n", 1234);
printf("%d %d\n", 12, 34);  //printf(인자1, 인자2, 인자3);  

-결과
Hello World!
1234
12 34

이처럼 문자열도, 정수 데이터도 출력이 가능함을 알 수 있다. 그런데 여기서 %d는 처음볼 것입니다. 이는 서식문자로, 출력의 형태를 지정하는 용도로 사용된다. 출력의 대상은 %d가 포함된 문자의 두 번째 인자가 호출됨을 알 수 있습니다. 보면 알 수 있듯이 %d는 10진수 정수형태의 출력을 의미합니다. (참고로 \n의 경우 줄바꿈 표시입니다.)



'배울 것들 > 언어' 카테고리의 다른 글

C프로그래밍 6/? 반복문  (0) 2018.11.19
C프로그래밍 5/? 자료형  (0) 2018.11.13
C프로그래밍 4/? 자료형  (0) 2018.11.11
C프로그래밍 3/? 데이터  (0) 2018.11.10
C프로그래밍 2/? (변수와 연산자)  (0) 2018.11.08

+ Recent posts