변수
변수란, 값을 저장할 수 있는 메모리 공간에 붙여진 이름으로, 변수를 선언하게 되면 각 변수에 대해 메모리 공간이 할당되고 메모리 공간에 변수의 이름이 붙는다.
#include <stdio.h>
int main(void)
{
int num;
num = 20;
printf("%d", num);
}
- int : 정수 형태의 데이터를 위한 메모리 할당
- num : 할당된 메모리 공간의 이름
- num=20 : num의 메모리 공간에 20을 저장
- printf("%d", num); : num의 메모리 공간에 저장된 값을 참조 후, 출력
변수를 선언하고 값을 할당(초기화)하는 방법은 두가지 방법이 존재한다.
- 변수만 선언 후, 초기화
- 변수 선언과 동시에 초기화
#include <stdio.h>
int main(void)
{
int num1, num2; // 변수 선언
int num3=30, num4=40; // 변수 선언과 동시에 값 할당
printf("num1: %d, num2: %d \n", num1, num2);
// 초기화 하지 않아, 의미없는 값이 출력됨 -> num1: 259005392, num2: 32759
num1=10;
num2=20;
printf("num1: %d, num2: %d", num1, num2);
//num1: 10, num2: 20
printf("num3: %d, num4: %d", num3, num4);
//num3: 30, num4: 40
return 0;
}
변수 선언 시 주의사항
변수 선언이 맨앞에 오도록 하는 것이 좋다 (과거 버전의 컴파일러에는 변수의 선언이 맨 앞에 와야하는 경우가 있음)
// 변수 선언이 맨 앞에 오는 경우
int main(void)
{
int num1, num2;
num1=10, num2=20;
return 0;
}
// 변수 선언이 맨 앞에 오지 않는 경우
int main2(void)
{
int num1;
num1=10;
int num2;
num2=20
return 0;
}
변수의 이름을 설정할 때의 규칙이 존재한다.
- 변수의 이름은 알파벳, 숫자, 언더바(_)로 구성된다.
- C언어는 대소문자를 구분한다.
- Num $\neq$ num
- 변수의 이름은 숫자로 시작할수 없고, 키워드도 변수의 이름으로 사용할 수 없다.
- int 7thval; (x)
- 이름 사이에 공백이 없어야 한다.
- int your name; (x)
변수의 자료형(Data Type)
정수형 변수
- char, short, int, long
실수형 변수
- float, double
문자형 변수
- str
연산자
// 연산자
#include <stdio.h>
int main(void)
{
int num1=9, num2=2;
printf("%d+%d=%d \n", num1, num2, num1+num2);
// 9+2=11
printf("%d-%d=%d \n", num1, num2, num1-num2);
// 9-2=7
printf("%dx%d=%d \n", num1, num2, num1*num2);
// 9x2=18
printf("%d/%d의 몫=%d \n", num1, num2, num1/num2);
// 9/2의 몫=4
printf("%d/%d의 나머지=%d \n", num1, num2, num1%num2);
// 9/2의 나머지=1
return 0;
}
복합 대입 연산자
표현을 간단히 하기 위한 복합 대입 연산자는 다음과 같다.
// 복합 대입 연산자
#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);
// Result : 5, 16, 1
return 0;
}
증가, 감소 연산자
증가, 감소 연산자는 변수의 앞뒤에 `++`, `--`를 붙여 1씩 증가시키거나 감소시키는 연산자이다.
다만 이를 사용할 때 연산자를 붙이는 위치에 따라 연산 결과가 달라질 수 있기 때문에 사용에 주의하여야 한다.
연산자 | 연산자의 기능 | 결합 방향 |
++num | 값을 1 증가 후, 속한 문장의 나머지를 진행 (ex: val = ++num;) |
$\leftarrow$ |
num++ | 속한 문장의 연산을 먼저 진행 후, 값을 1 증가 (ex: val = num++;) |
$\leftarrow$ |
--num | 값을 1 감소 후, 속한 문장의 나머지를 진행 (ex: val = --num;) |
$\leftarrow$ |
num-- | 속한 문장의 연산을 먼저 진행 후, 값을 1 감소 (ex: val = num--;) |
$\leftarrow$ |
// 증가, 감소 연산자
#include <stdio.h>
int main(void)
{
int num1=10;
int num2=(num1--)+2; // 후위 감소 : 연산 후, 감소(num2 = num1+2 = 12) & (num1 = num-1 = 9)
printf("num1: %d \n", num1);
printf("num2: %d \n", num2);
return 0;
}
관계 연산자
두 값 간의 관계에 대해 계산하는 연산자이다.
// 관계 연산자
#include <stdio.h>
int main(void){
int num1=10, num2=12;
int result1, result2, result3; // 관계 연산자의 return 값은 0,1 이므로 정수 변수 선언
result1 = (num1==num2);
result2 = (num1<=num2);
result3 = (num1>num2);
printf("result1: %d \n", result1);
//result1: 0 (False)
printf("result2: %d \n", result2);
//result2: 1 (True)
printf("result3: %d \n", result3);
//result3: 0 (False)
return 0;
}
논리 연산자
연산자 | 연산자의 기능 | 결합 방향 |
&& | A와 B 모두가 참이면 참을 반환 (A && B) |
$\rightarrow$ |
|| | A와 B 둘 중 하나라도 참이면 참을 반환 (A || B) |
$\rightarrow$ |
! | A가 참이면 거짓, 거짓이면 참을 반환 (!A) |
$\leftarrow$ |
// 논리 연산자
#include <stdio.h>
int main(void){
int num1=10, num2=12;
int result1, result2, result3;
result1 = (num1==10)&&(num2==12); // True && True = True(1)
result2 = (num1<12)||(num2>12); // True || False = True(1)
result3 = (!num1); // !True(0이 아니므로) = False(0)
printf("result1: %d \n", result1);
printf("result2: %d \n", result2);
printf("result3: %d \n", result3);
return 0;
}
키보드로부터의 데이터 입력과 C언어의 키워드
'scanf' 함수 : 키보드로부터 값을 입력 받음
// 데이터 입력(scanf)
#include <stdio.h>
int main(void){
int result;
int num1, num2;
printf("정수 one: "); // 출력
scanf("%d", &num1); // 입력 : 변수명 앞에 &을 붙임(Pointer)
printf("정수 two: "); // 출력
scanf("%d", &num2); // 입력 : 변수명 앞에 &을 붙임(Pointer)
result=num1+num2;
printf("%d+%d = %d \n", num1, num2, result);
// 3+4 = 7
return 0;
}
한 번의 함수 호출을 통해 둘 이상의 변수에 값을 입력할 수 있다.
// scanf - (2)
#include <stdio.h>
int main(void){
int result;
int num1, num2, num3;
printf("3개의 정수 입력: ");
scanf("%d,%d,%d", &num1, &num2, &num3); // 다음과 같은 형태일 경우(4,5,6)으로 입력
scanf("%d %d %d", &num1, &num2, &num3); // 다음과 같은 형태일 경우(4 5 6)으로 입력
result = num1+num2+num3;
printf("%d+%d+%d = %d \n", num1, num2, num3, result);
return 0;
}
키워드
C언어의 문법을 구성하는, 이미 그 의미가 정해져있는 단어들을 '키워드'라고 한다.
`auto, _Bool, break, case, char, _Complex, const, continue, default, do, double, else, enum, extern, float, for, ...`
'공부 > C언어' 카테고리의 다른 글
C언어 - (6) : 반복문 (0) | 2024.10.07 |
---|---|
C언어 - (5) : printf / scanf (3) | 2024.10.06 |
C언어 - (4) : 자료형/형 변환 (3) | 2024.10.03 |
C언어 - (3) : 자료형 별 데이터의 표현 방식 / 비트 연산자 (2) | 2024.09.11 |
C언어 - (1) (0) | 2024.09.05 |