scanf() 함수는 키보드로부터 다양한 형태의 데이터를 입력받을 수 있는 함수이다. 

int main(void){
	int num;
    scanf("%d", &num);
}

키보드로부터 데이터를 입력 받으려면 데이터의 종류에 맞게 메모리 공간을 미리 할당해야 한다. 위의 코드에서는 scanf()함수 호출 전에 변수 num을 선언하여 메모리 공간을 할당하였다. scanf() 함수를 보면 10진수 정수 형테의 데이터를 입력받아서 num이라는 변수에 저장하라는 의미를 담고 있다.

다음 코드는 정수 두개를 입력받아서 그 두 정수의 합을 출력하는 프로그램의 예제 코드이다.

#include <stdio.h>

int main(void){
  int result, num1, num2;

  printf("num1 : ");
  scanf("%d", &num1);
  printf("num2 : ");
  scanf("%d", &num2);

  result = num1 + num2;
  printf("%d + %d = %d\n",num1, num2, result);
  return 0;
}

 

scanf() 함수는 10진수 정수뿐 아니라 16진수, 문자열등 다양한 형태의 데이터를 입력받을 수 있다.

 

또한 다음과 같은 방식으로 여러개의 데이터를 동시에 입력받을수도 있다.

int main(void)
{
	int num1,num2,num3;
	scanf("%d %d %d", &num1, &num2, &num3);
}

scanf()함수는 공백을 기준하여 데이터를 구분한다. 위 코드와 같이 여러개의 데이터를 한번에 입력 받을 때는 3개의 정수 사이에 공백에 해당하는 스페이스바를 입력하여야 한다. ex) 3 4 5 

'Language > C, C++' 카테고리의 다른 글

[C] 진수 표현  (0) 2020.11.21
[C] 키워드  (0) 2020.11.21
[C] 연산자  (0) 2020.11.19
[C] 변수  (0) 2020.11.18
[C] printf()  (0) 2020.11.18
연산자 연산자의 기능
= 연산자 오른쪽의 값을 왼쪽에 있는 변수에 대입한다.
num = 20;
+ 두 피연산자의 값을 더한다.
num = 4+3;
- 왼쪽의 피연산자 값에서 오른쪽의 피연산자 값을 뺀다.
num = 20 - 10;
* 두 피연산자의 값을 곱한다.
num = 4 * 2;
/ 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눈다.
num = 8 / 4;
% 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눴을 때 얻게되는 나머지 값을 반환한다.
num = 5 % 2

 

복합 대입 연산자

다른 연산자와 합쳐진 형태의 대입연산자를 복합 대입 연산자라 한다.

#include <stdio.h>

int main(void){
  int num1 = 2, num2 = 4, num3 = 6;
  num1 += 3;  // num1 = num1 + 3;
  num2 *= 4;  // num2 = num2 * 4;
  num3 %= 5;  // num3 = num3 % 5;
  printf("Result : %d, %d, %d \n",num1, num2, num3);
  return 0;
}
// output : Result : 5, 16, 1 

위 코드처럼 num1의 연산 결과를 다시 num1에 저장하는 연산식 같은 경우는 복합 대입 연산자를 이용하면 더 간략하게 표현할 수 있다.

 

+연산자와 -연산자는 정수 표현에서 음의 정수와 양의 정수를 표현하기 위해 사용되기도 한다.

 

증가, 감소 연산자

변수명이 num이라 할 때 num++는 후위증가, ++num은 전위증가 라고 한다.

#include <stdio.h>

int main(void){
  int num1 = 12, num2 = 12;

  printf("num1 : %d \n", num1);
  printf("num1++ : %d \n", num1++);	// 후위증가
  printf("num1 : %d \n", num1);

  printf("num2 : %d \n", num2);
  printf("++num2 : %d \n", ++num2);	// 전위증가
  printf("num2 : %d \n", num2);
  return 0;
}
/*
output:
num1 : 12
num1++ : 12
num1 : 13
num2 : 12
++num2 : 13
num2 : 13
*/

후위증가의 경우에는 printf()함수가 먼저 실행되고 연산이 진행된다. 또한 전위증가의 경우에는 연산이 먼저 진행되고, printf() 함수가 실행된다.  이와 같은 방식은 -- 연산자로도 사용이 가능하다.

#include <stdio.h>

int main(void){
  int num1 = 10;
  int num2 = (num1--)+2;

  printf("num1 : %d, num2 : %d\n", num1, num2);
  return 0;
}
// output : num1 : 9, num2 : 12

위 코드의 num2 변수에서도 num1--는 후위감소이기 때문에 먼저 num1 + 2 의 연산을 진행하고 후에 num1이 1 감소되었다. 후위 증가 및 후위 감소의 연산에서는 소괄호의 영향을 받지 않고, 다음 문장으로 넘어가야 값의 증가 및  감소가 이루어진다.

 

관계연산자

관계연산자는 값의 대소나 동등의 관계를 따지는 연산자이다. 관계 연산자는 비교 연산자 라고도 한다.

연산자 연산자의 기능
< a < b
a가 b 보다 작은가?
a > b
a가 b보다 큰가?
== a == b
a와 b가 같은가?
!= a != b
a와 b가 다른가?
<= a <= b
a가 b보다 작거나 같은가?
>= a >= b
a가 b보다 크거나 같은가?

관계연산자들은 조건을 만족하면 1을, 만족하지 않으면 0을 반환한다. 1은 참(true)을 의미하고, 0은 거짓(false)을 의미한다. 

#include <stdio.h>

int main(void){
  int num1 = 10, num2 = 12;
  int res1, res2, res3;

  res1 = (num1 == num2);
  res2 = (num1 <= num2);
  res3 = (num1 > num2);

  printf("res1 : %d\n", res1);
  printf("res2 : %d\n", res2);
  printf("res3 : %d\n", res3);

  return 0;
}
/*
output :
res1 : 0
res2 : 1
res3 : 0
*/

 

논리연산자

AND(논리곱), OR(논리합), NOT(논리부정)을 표현하는 연산자이다.

연산자 연산자의 기능
&& A && B
A와 B가 모두 참이면 참을 반환한다.(논리 AND)
|| A || B
A와 B 둘 중 하나라도 참이면 참을 반환한다.(논리 OR)
! !A
A가 참이면 거짓, 거짓이면 참을 반환한다.(논리 NOT)

논리 연산자 보다 관계 연산자가 먼저 수행된다. result = (1 < 10) && (2 == 2)의 경우에는 두 식이 모두 참이기 때문에 result 값은 1이된다. 또한 C는 0이 아닌 값은 모두 참으로 간주하기 때문에 result = !10 과 같은 경우 참(10)을 부정했기 때문에 result 값은 0이된다.

'Language > C, C++' 카테고리의 다른 글

[C] 키워드  (0) 2020.11.21
[C] scanf()  (0) 2020.11.21
[C] 변수  (0) 2020.11.18
[C] printf()  (0) 2020.11.18
[C] 주석  (0) 2020.11.17

C에서 변수가 의미하는 것은 값을 저장할 수 있는 메모리 공간에 붙은 이름, 혹은 메모리 공간 자체를 가리키는 것이다.

그래서 변수를 하나 선언하면 변수의 이름을 통해 값의 저장과 참조가 가능하다.

int main(void){
	int num;	// num이라는 이름의 변수 선언
    num = 20;	// 변수 num에 20저장
    printf("%d", num)	// 변수 num의 값 참조
}

위 코드에서 int는 정수 저장이 가능한 메모리를 할당한다는 의미이고, num은 그 메모리 공간의 이름을 num이라고 하겠다는 것이다. C에서 = 기호는 대입 연산자로 값의 대입을 의미한다. 대입연산자가 사용되면 연산자 오른쪽의 값을 왼쪽의 변수에 대입한다. printf()함수에서는 num에 저장된 값  20이 출력된다. 선언된 변수에 처음 값을 대입하는 것을 초기화 라고 한다. 초기화 후 저장된 값은 변경 가능하다.

 

C에서는 다음과 같이 변수를 선언과 동시에 초기화 하는것, 둘 이상의 변수를 동시에 선언하는 것, 둘 이상의 변수를 동시에 선언 및 초기화 하는 것도 가능하다.

int num1 = 12;	// 선언과 동시에 초기화
int num2, num3;	// 두개의 변수 선언
int num4 = 5, num5 = 20;	// 두개의 변수를 선언 및 초기화

 

#include <stdio.h>

int main(void){
  int num1, num2;
  int num3=30, num4=40;

  printf("num1: %d, num2: %d \n", num1, num2);
  num1 = 10;
  num2 = 20;

  printf("num1: %d, num2: %d \n", num1, num2);
  printf("num3: %d, num4: %d \n", num3, num4);
  return 0;
}
/*
output:
num1: 0, num2: 4200864 
num1: 10, num2: 20 
num3: 30, num4: 40
*/

첫 번째 출력값을 보면 변수를 선언만하고 초기화를 하지 않았을 경우 쓰레기값이 저장될 수 도 있다. 따라서 변수를 선언과 동시에 0으로 초기화 한 후 나중에 필요한 값을 저장하는 방법을 많이 사용하기도 한다.

 

변수 선언 규칙

1. 변수의 이름에는 알파벳, 숫자, 언더바(_)만 사용할 수 있다.(언더바를 제외한 다른 특수문자는 사용할 수 없다.)

2. C는 대소문자를 구분한다. (변수 num 과 변수 NUM은 다른 변수 이다.)

3. 변수의 이름은 숫자로 시작할 수 없다.

4. 키워드는 변수로 사용할 수 없다(키워드 예 : printf, return 등)

5. 변수 이름 사이에는 공백이 사용될 수 없다.

'Language > C, C++' 카테고리의 다른 글

[C] scanf()  (0) 2020.11.21
[C] 연산자  (0) 2020.11.19
[C] printf()  (0) 2020.11.18
[C] 주석  (0) 2020.11.17
[C]Hello World.c  (0) 2020.11.17

주석은 프로그램 내에 삽입된 메모이다. 컴파일 대상에서 제외되어 주석은 프로그램의 실행 결과에 영향을 미치지 않는다. 주석은 자신이 작성한 코드이던, 남이 작성한 코드이던 더 빠르고 쉽게 코드를 이해할 수 있도록 도와주기 때문에 프로그래밍의 필수 요소이다. 

 

C에서 주석 작성 방식

여러줄 주석

/*
	주석처리 된 문장 1
    주석처리 된 문장 2
    주석처리 된 문장 3
*/

 

한줄주석

// 주석처리 된 문장1
// 주석처리 된 문장2
// 주석처리 된 문장3

 

'Language > C, C++' 카테고리의 다른 글

[C] scanf()  (0) 2020.11.21
[C] 연산자  (0) 2020.11.19
[C] 변수  (0) 2020.11.18
[C] printf()  (0) 2020.11.18
[C]Hello World.c  (0) 2020.11.17
#include <stdio.h>

int main(void){
  printf("hello world\n");
  return 0;
}

C언어를 처음 배우게되면 가장 먼저 작성하게되는 프로그램이다. 콘솔창에 hello world 를 출력하는 간단한 프로그램이다. 

C언어 프로그래밍은 C언어로 입력과 그에 따른 출력이 존재하는 함수(function)를 만들고 함수의 실행 순서를 결정하는 일이다. 

 

C로 구현된 프로그램은 항상 main 이라는 함수를 제일 먼저 호출하기 때문에 main 함수는 항상 정의되어 있어야 한다.

위 코드를 보면 int main(void) 에서 int는 출력 형태이고, main은 함수이름, void는 입력 형태이다. 중괄호 내부는 함수의 기능을 정의하고 있고, 중괄호 내에 있는 문장들은 순차적으로 실행된다.

C는 문장의 끝을 표현하기 위해 세미클론(;) 을 사용한다.

 

중괄호 내부의 printf() 함수는 따로 정의하지 않아도 호출이 가능한 표준 함수이다. C에는 많은 수의 표준 함수들이 있고, 표준 함수들을 모아둔 것을 표준 라이브러리 라고 한다.

 

printf()와 같은 표준 함수의 호출을 위해서는 printf()함수와 관련이 있는 헤더파일을 선언해야한다. 위 코드에서 헤더파일 선언은 #include <stdio.h> 이다. 이 선언은 확장자가 .h 로 끝나는 stdio.h 라는 헤더파일을 포함하라는 의미이다. printf()와같은 함수를 사용하기 위해서는 stdio.h라는 헤더파일을 선언해야 한다. 헤더파일의 선언은 소스코드의 맨 앞부분, main함수 정의 전에 선언되어야 한다.

 

return 0; 부분은 return문 이라고 한다. return문은 함수를 호출한 영역으로 값을 전달하고, 현재 실행중인 함수를 종료시키는 역활을 한다. 위 코드에서는 main 함수를 호출한 영역으로 0을 전달하고, main 함수를 종료한다. main 함수의 종료는 프로그램의 종료로 이어지기 때문에 프로그램도 종료된다. 

'Language > C, C++' 카테고리의 다른 글

[C] scanf()  (0) 2020.11.21
[C] 연산자  (0) 2020.11.19
[C] 변수  (0) 2020.11.18
[C] printf()  (0) 2020.11.18
[C] 주석  (0) 2020.11.17

+ Recent posts