-
[C] 간단한 개념 정리 (Chapter 03)[C언어] 2023. 9. 27. 16:26
연산자 : C언어를 이용해서 특정연산을 요구할 때 사용하는 약속된 기호를 가리켜 '연산자' 라고 한다.
변수 : 값을 저장할 수 있는 메모리 공간에 붙은 이름, 혹은 메모리 공간 자체를 가리킴.
변수를 이용한 데이터의 저장
#include <stdio.h>
int main(void) {int num; // num 이라는 변수 선언num = 20; // 변수 num 에 20 저장printf("%d", num); // 변수 num 의 값 참조
return 0;}int : 정수의 저장이 가능한 메모리 공간을 할당.
num : 그 메모리 공간의 이름을 num 이라 한다.
변수의 다양한 선언 및 초기화 방법
초기화 : 선언된 변수에 처음 저장하는 것을 가리켜 '초기화' 라고 한다.
int num = 12;위와 같이 선언과 동시에 초기화가 가능함.
int a, b;여러 개의 변수를 선언할 수 있다.
int c = 30, d = 40;여러 개의 변수를 선언과 동시에 초기화도 할 수 있다.
+ 변수를 선언만 하고 초기화하지 않으면 쓰레기 값이 저장된다.
여기서 쓰레기 값이란 '아무런 의미가 없는 값' 을 의미하며 가급적 이러한 쓰레기 값이 변수에 저장되지 않도록 하는 것이 좋다.
따라서 선언과 동시에 0으로 초기화한 다음, 이후에 의미 있는 값을 저장하는게 좋다.
변수선언 시 주의할 사항
1. 중괄호 내에 변수를 선언할 경우 , 변수의 선언문은 중괄호의 앞부분에 위치해야 한다.
2. 변수의 이름은 알파벳, 숫자, 언더바 ( _ ) 로 구성한다.
3. C언어는 대소문자를 구분하므로 변수 Num 과 변수 num은 서로 다른 변수이다.
4. 변수의 이름은 숫자로 시작할 수 없고, 키워드도 변수의 이름으로 사용할 수 없다.
5. 이름 사이에 공백이 삽입될 수 없다.
+ 변수의 이름을 정할 때에는 변수의 역할에 어울리는, 의미 있는 이름을 지어야 한다.
변수의 자료형 (TYPE)
정수형 변수 : 정수의 저장을 목적으로 선언된 변수
실수형 변수 : 소수점 이하의 값을 지니는 실수의 저장을 목적으로 선언된 변수
대입 연산자 ( = ) 와 산술 연산자 ( +, -, *, /, %
이항 연산자 : 두 개의 피연산자를 요구하는 연산자를 가리켜 '이항 연산자' 라고 한다.
연산자 연산자의 기능 결합방향 = 연산자 오른쪽에 있는 값을 연산자 왼쪽에 있는 변수에 대입한다. <- + 두 피연산자의 값을 더한다. -> - 왼쪽의 피연산자 값에서 오른쪽의 피연산자 값을 뺀다. -> * 두 피연산자의 값을 곱한다. -> / 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눈다. -> % 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눴을 때 얻게 되는 나머지를 반환한다. -> + 함수 호출문의 인자 전달 위치에 연산식이 올 수 있다.
복합 대입 연산자
a = a + b a += b a = a - b a -= b a = a * b a *= b a = a / b a /= b a = a % b a %= b ex)
#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;}Result: 5, 16, 1증가, 감소 연산자
연산자 연산자의 기능 결합방향 ++num 값을 1 증가 후, 속한 문장의 나머지를 진행 (선 증가, 후 연산) <- num++ 속한 문장을 먼저 진행한 후, 값을 1 증가 (선 연산, 후 증가) -> --num 값을 1 감소 후, 속한 문장의 나머지를 진행 (선 감소, 후 연산) <- num-- 속한 문장을 먼저 진행한 후, 값을 1 감소 (선 연산, 후 감소) -> 관계 연산자 ( <, >, ==, !=, <=, >= ) - " 조건을 만족하면 1, 만족하지 않으면 0을 반환. "
연산자 연산자의 기능 (n1, n2) 결합방향 < n1 이 n2 보다 작은가? -> > n1 이 n2 보다 큰가? -> == n1 과 n2 가 같은가? -> != n1 과 n2 가 다른가? -> <= n1 이 n2 보다 같거나 작은가? -> >= n1 이 n2 보다 같거나 큰가? -> 논리 연산자 ( &&, ||, ! )
연산자 연산자의 기능 ( A, B) 결합방향 && A 와 B 모두 '참'이면 연산결과로 '참'을 반환
(AND)-> || A 와 B 둘 중 하나라도 '참'이면 연산결과로 '참'을 반환 (OR) -> ! A 가 '참'이면 '거짓', A 가 '거짓'이면 '참'을 반환
(NOT)<- ex)
#include <stdio.h>
int main(void) {int num1 = 10;int num2 = 12;int result1, result2, result3;
result1 = (num1 == 10 && num2 == 12);result2 = (num1 < 12 || num2 > 12);result3 = (!num1);
printf("result1: %d \n", result1);printf("result2: %d \n", result2);printf("result3: %d \n", result3);
return 0;}result1: 1 result2: 1 result3: 0+ 논리 연산자보다 관계 연산자가 먼저 진행이 됨
+ C언어는 0이 아닌 모든 값을 '참(true)' 으로 간주한다.
콤마 연산자 ( , )
ex)
#include <stdio.h>
int main(void) {
int num1 = 1, num2 = 2;printf("Hello "), printf("world! \n");num1++, num2++;printf("%d ", num1), printf("%d ", num2), printf("\n");
return 0;}Hello world! 2 3연산자의 우선순위와 결합방향
결합방향 : 우선순위가 동일한 두 연산자가 하나의 수식에 존재하는 경우, 어떠한 순서대로 연산하느냐를 결정해 놓은 것
순위 연산기호 연산자 결합방향 1위 () 함수호출 -> [] 인덱스 -> -> 간접지정 -> . 직접지정 -> ++ (postfix)
-- (postfix)후위증가 및 감소 -> 2위 ++ (prefix)
-- (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 함수의 호출
int main(void) {int num;scanf("%d", &num); // 키보드로 입력된 정수를 변수 num에 저장하라.}"%d" : 10진수 정수형태로 입력 받는다.
"&num" : 변수 num 에 저장하라.
& => 일단 " 입력된 데이터를 저장할 변수의 이름 앞에 & 연산자를 붙여야 한다. " 라고만 기억하고 있을 것.
'[C언어]' 카테고리의 다른 글
[C] 간단한 개념 정리 (Chapter 08) (2) 2023.10.17 [C] 간단한 개념 정리 (목차) (1) 2023.10.09 [C] 간단한 개념 정리 (Chapter 06) (0) 2023.10.05 [C] 간단한 개념 정리 (Chapter 05) (1) 2023.10.05 [C] 간단한 개념 정리 (Chapter 02) (0) 2023.09.20