[C, C++, 프로그래밍 기초 완전 정복 목차]
[ 연산자 Operator ]
안녕하세요~!! 오늘은 연산자에 대해서 배워볼까 합니당 ㅎㅎ
서론.. 들어가기 전
컴퓨터는 원래 계산기였어요 ㅎㅎ
지금이야 뭐 워낙 빠르게 발전해서 정말 다양한 업무들을 대신 수행해주고 있지만. 현재의 컴퓨터로 발전하게 기원을 거슬러 거슬러 올라가면 시초는 요 아이입니다.
컴퓨터(Computer)라는 단어 자체도 '계산하다(Compute) + er(하는 사람 또는 주체) '가 결합된 단어로 계산기라는 뜻이예요 ㅎㅎ
계산기는 무엇을 하죠?? 더하고 빼고 나누고 !! 요런 연산을 하죠. 예전에 컴퓨터는 계산하는 것이 주된 역할이었지만, 현재도 컴퓨터의 가장 중요한 역할은 사람이 할 수 없는 복잡한 수식을 계산하는 일이예요~!
연산자랑 피연산자
연산이란, 프로그램에서 데이터를 처리하여 결과를 산출하는 걸 말합니다.
연산자란, 연산을 수행하기 위해 사용되는 문자, 즉 대상을 두고 계산을 할 때 사용되는 기호를 말해요.
그리고 연산을 당하는(?) 대상을 피연산자라고 합니다 ㅎㅎ
왼쪽 사진을 참고하면 쉽게 이해할 수 있어요 :)
아마 우리가 익숙하게 알고 있는 연산자는, 더하기, 빼기, 나누기, 곱하기 사칙연산일겁니다. 초등학생때부터 주구장창 수학시간에 현재도 수행하고 있는 연산들이니까요 ㅎㅎ
근데 컴퓨터는 연산자의 종류를 매우 다양하게 가지고 있어요.
더 복잡한 수식을~! 더 효율적인 계산 로직을 짜기 위해서 사람이 여러 연산자를 사전적으로 정의해두었습니다.
원래 연산자가 어찌보면 단축키 같은거잖아요?
'3+3+3+3+3'라는 계산을 수행하는데 저렇게 표현하기 너무 귀찮(?)으니까 곱하기라는 연산자를 만들어서 '3*5'로 퉁친 것처럼 ㅋㅋ (ㅎㅎ제가 이해하는 방식..ㅋㅋ)
컴퓨터도 계산을 효율적으로 나타내고 수행하기 위해 다양한 연산자를 가지고 있습니다.
연산자의 종류
컴퓨터에서 연산자는 크게 단항연산자, 이항연산자, 삼항연산자로 구분할 수 있어요.
차이는 뭐.. 연산을 수행하는 피연산자가 한 개 대상이냐, 두 개가 대상이냐, 세 개가 대상이냐 입니다. ㅎㅎ
간단한 example
▶대표적인 단항 연산자로는 부호연산자를 예로 들 수 있어요.
어라? 단순히 부호를 나타내는 플마 기호인데 이것도 연산자야?
--> 네 맞아용
(컴퓨터는 이진수로 수를 표현하기 때문에, 연산자를 만나면 내부적으로 많은 행위를 하게 된답니다! +4는 0100이지만 -4는 1100 이거든요. 연산자를 보고 내부적으로 처리를 맞게 해주는거예요 ㅎㅎ )
▶대표적인 이항 연산자로는 우리가 이미 많이 써본 대입연산자가 있어요.
'20이라는 값을 value라는 변수에 대입한다' 라는 코드입니다.
위의 단항연산자는 피연산자가 '5'밖에 없었지만
여기서 피연산자는 value와 20으로 두 개네요!
'=' 대입 연산자 하나에 피연산자가 두 개 이므로 이항연산자입니다.
▶삼항연산자는 딱 한개밖에 없어요. 조건연사자( ? : ) 입니다.
삼항 연산자에 관한 내용은 추후, if문과 같은 조건식 배울 때 다뤄질 예정이예요.
(하단에 가면 삼항연산자를 다룬 조건문 포스팅이 링크되어 있습니다)
★ 오늘 포스팅에서는 전체 연산자를 간략하게 OVERVIEW 해볼거예요 ㅎㅎ
각 연산자 종류별 자세한 내용은 맨 밑에 참조 링크를 참고하세요
단항 연산자의 종류
먼저 단항 연산자 종류에 대해 훑어봅시다. OVERVIEW~
연산자 종류 |
연산자 |
피연산자 수 |
부호 연산자 |
+(양수), -(음수) |
단항 |
증감 연산자 |
++(1 증가), -- (1 감소) |
단항 |
형변환 연산자 |
(type) |
단항 |
논리 연산자 |
! (단항) |
단항도 있고 이항도 있음 |
비트 연산자 |
~(단항) |
단항도 있고 이항도 있음 |
연산자는 종류별로 아마 포스팅이 따로 들어갈건데, '부호 연산자'처럼 포스팅을 새로 하나 만들만큼, 내용이 길지 않은 것은 잠깐 보고 넘어갑시당.
※ 형변환 연산자
피연산자의 자료형이 다를 때, 자료형을 일치시켜주는 연산자입니다.
int num2 = 10;
float num1 = (float) num2; //num2를 float 타입으로 변환
↓ 해당 포스팅에서 형변환 관련된 부문들을 다루고 있어요 ㅎㅎ
※ 증감연산자
증감 연산자에 대해서는 전위 후위 연산자라고 해서 나중에 더 자세히 배우게 될거예요 ㅎㅎ
'value = value +1'과' value++'과 같고
'value = value -1'과 'value--'와 같습니다.
-- 자바 JAVA
class Main {
public static void main (String[] args) throws java.lang.Exception {
int value = 0;
value++; //증감연산자!
System.out.println(value);
}
}
-- C++
#include <iostream>
using namespace std;
int main() {
int value =0;
value++;
cout<<value<<endl;
return 0;
}
value가 0이었는데 증감연산자로 인해 1이 추가되어 결과로는 1이 출력됩니다.
이항 연산자의 종류
연산자 종류 |
연산자 |
피연산자 수 |
산술 연산자 |
+(더하기), -(빼기), *(곱하기), /(나누기), %(모듈) |
이항 |
대입 또는 복합대입연산자 |
= , +=, -=, *=, /=, %=, &=. |=, ^=, <<=, >>= 등 |
이항 |
비교 연산자 |
==, !=, >, <, =>, <= instanceof(자바의 경우) |
이항 |
논리 연산자 |
단항: ! 이항: &&, || |
단항도 있고 이항도 있음 |
비트 연산자 |
단항: ~ 이항: &, |, ^ |
단항도 있고 이항도 있음 |
쉬프트 연산자 |
>>, <<, >>> |
이항 |
문자열 연산자 |
+ (Java의 경우) |
이항 |
※ 산술연산자 (Arithmetic Operator)
우리가 잘 알고 있는 사칙연산! 더하기 빼기 등등.. 요런게 산술연산자입니다.
참고로 산술연산자에서 보이는 '*'는 곱하기 기호 '×' 와 같습니다.
그리고 '/'는 나누기 '÷' 예요 ㅎㅎ
산술연산자에는, +(더하기),-(빼기),*(곱하기),/(나누기),%(나머지구하기) 요렇게 다섯개가 있습니다~
↓ 해당 포스팅에서 산술연산 관련된 부문들을 다루고 있어요 ㅎㅎ
※ 복합 대입 연산자
대입 연산자(=)는 많이 봤죠?
대입 연산자들 중에서는 다른 연산자와 합쳐진 형태의 대입 연산자도 존재합니다. --> 요개 복합 대입 연산자들~
요렇게 산술연산과 대입연산이 합쳐진 복합 대입 연산자들 외에도 비트 연산자랑 합쳐진 것들도 있고 많습니당 ㅎㅎ
※ 비교연산자 (Comparison Operator)
관계연산자라고도 하는데, 대소와 동등 관계를 따지는 연산자입니다.
a보다 b가 큰지? a와 b가 같은지? 요런걸 판별해줘요
대부분 수학시간에 배웠던 거랑 유사해요. 다만 다른 점이 몇 개 있는데..
● 대소 부문
우리 수학시간에 했을 때에는 '크거나 같다' 또는 '작거나 같다'를 위 수식으로 판별했을 거예요~~
그런데 컴퓨터 프로그램을 작성할 때에는 '<='와 '>=' 기호를 사용한다는거~~
● 등가비교 부문
수학시간에는 a=b 하면 a와 b가 같다! 였는데, 이렇게 해버리면 대입연산자(=)와 기호가 겹치잖아요!
그래서 동등을 표현할 때 우리는 '=='로 비교합니다.
요거는 NOT연산자를 함께 써서 '!=' 이렇게 표현해요.
이것만 알고 계시면 나머지는 다 동일합니다.
--C언어
#include <stdio.h>
int main() {
int a=10, b=20;
printf("%d\n", a < b); //참이므로 1
printf("%d\n", a > b); //거짓이므로 0 출력
return 0;
}
비교 연산자는 참이면 1(true), 거짓이면 0(false)를 반환합니다.
비교 연산자에 대해서도 좀 설명하고 싶은 부문이 있어서 포스팅을 따로 뺄 예정이예요.
※ 논리연산자
논리 연산자란 AND(논리곱), OR(논리합), NOT(논리부정)을 표현하는 연산자입니다. 여기서 논리부정인 (!)은 단항연산자예요 ㅎㅎ
&& |
AND(논리곱) |
이항연산자 |
둘다 참일 때 참 |
A && B A와 B가 참일 때 참 |
|| |
OR(논리합) |
이항연산자 |
둘 중 하나라도 참이면 참 |
A || B A가 참이거나 B가 참일 때 참 |
! |
NOT(논리부정) |
단항연산자 |
참이면 거짓, 거짓이면 참 |
!A A가 참이면 거짓 반환 A가 거짓이면 참 반환 |
특히 조건식과 같이 잘 활용되는 연산자입니다 ㅎㅎ 요 친구도 추후에 디테일하게 다뤄볼게요
※ 비트연산자
비트 단위로 연산을 진행할 때 사용되는 연산자예요 ㅎㅎ 비트(bit)는 컴퓨터 기억장치의 최소 단위로 0 또는 1만 구분합니다.
비트 단위에서 AND(&), OR(|), XOR(^), NOT(~) 연산을 수행합니다.
true 반환 기준: and는 둘 다 1일때, or는 둘 중에 하나만 1이어도 참, XOR은 두 비트가 다르면 참
↓ 해당 포스팅에서 비트 연산 관련된 부문들을 다루고 있어요 ㅎㅎ
AND 연산자: https://jhnyang.tistory.com/162
[프로그래밍C++,Java 생기초] 비트 연산자1(bitwise operator)- & AND연산자 개념 정리 및 활용, 실습 예제(
[Java, C, C++ 프로그래밍 강좌 목차 편, 링크 모음] 오늘 프로그래밍 기초 편에서는 연산자 중 비트 연산자에 대해 다뤄볼게요 처음에 프로그래밍을 배울 때 대입연산자나 산술연산자 같은 경우는
jhnyang.tistory.com
※ 문자열 연산자
문자열을 합칠 때 사용하는 '+'연산자는 C언어나 C++에서 지원하지 않아요
[C언어]
printf("Hello"+"friends"); -> 에러
[C++]
cout<<"Hello"+"friends"<<endl; -> 에러
[Java]
System.out.println("hello"+"friends"); -> OK
자바나 다른 언어에서 지원하는 연산자입니다. ㅎㅎ
삼항 연산자
삼항 연산자는 딱 하나뿐인데요 , 조건식에서 사용됩니다. 조건문 배우는 포스팅에서 다루게 될거예요 ㅎㅎ
간단하게만 보고 넘어가자면 삼항연산자(?:)는 요런 구조로 되어있어서 피연산자가 3개가 됩니다.
조건식이 참이면 '?'뒤에 있는 식1을 수행하고 거짓이면 ':'뒤에 있는 식2의 명령을 수행하라는 뜻입니다.
이번 포스팅에서는 연산자 개념에 대해서 살펴보고
그 종류가 무엇이 있는지 대략적으로만 OVERVIEW하는 시간을 가졌어요 ㅎㅎ
각각의 종류별 연산자에 대해서는 좀 더 디테일한 포스팅에서 파헤쳐보도록 해요~!!
참고)
산술연산자 그리고 형변환
[Java, C, C++ 기초 강좌] 산술연산자 그리고 형변환 ( + 모듈연산, 0으로 나누기)
[ C, C++ 완전정리 목차 ] 안녕하세요~~! 오늘도 방문해주신 여러분들 감사합니다. ~ :) 저번 연산자 포스팅에서 연산자를 전반적으로 훑어봤는데요~! 이번에는 하나하나 들어가보려고 합니다. 오늘은 산술연산자..
jhnyang.tistory.com
[프로그래밍C++,Java 생기초] 비트 연산자1(bitwise operator)- & AND연산자 개념 정리 및 활용, 실습 예제(bitset, toBinaryString)
[프로그래밍C++,Java 생기초] 비트 연산자1(bitwise operator)- & AND연산자 개념 정리 및 활용, 실습 예제(bitset, toBinaryString)
[Java, C, C++ 프로그래밍 강좌 목차 편, 링크 모음] 오늘 프로그래밍 기초 편에서는 연산자 중 비트 연산자에 대해 다뤄볼게요 처음에 프로그래밍을 배울 때 대입연산자나 산술연산자 같은 경우는 빠르게 배워요..
jhnyang.tistory.com
그럼 오늘은 여기까지~~!
공감, 댓글, 광고보답은 더 질좋은 포스팅을 공유하는데 힘이됩니다.
'별걸다하는 IT > 프로그래밍언어' 카테고리의 다른 글
[C언어] 파일입출력 -스트림(STREAM)에 대한 이해, fopen, fclose (2) | 2019.10.28 |
---|---|
[Java/C/C++] 변수 선언, 초기화 방법과 변수 명명 규칙, 카멜(Camel) 파스칼 표기법 (1) | 2019.10.23 |
[C언어][string.h]문자열 관련 함수- strlen(길이)함수의 모든 것, 함수 코드, 사용법 및 예제, 주의사항 등 (0) | 2019.10.18 |
[Java, C, C++ ] 배열이란, 배열 선언 및 초기화 - 프로그래밍기초 (4) | 2019.10.13 |
[C언어]문자열 복사 함수 strcpy, strcnpy와 주의사항, 널문자 (null) - string.h 라이브러리 파헤치기 (3) | 2019.10.10 |
최신 댓글