티스토리 뷰
0.
본 글은 프로그래밍을 처음 접하는 초보자들을 위해 작성한 것입니다. 모든 연산자의 종류를 보러 오신분들은 다른 글을 참고해주세요. 또 초보자들을 위한 글인만큼 질문도 적극적으로 받고 상세해게 답변해드리니 편하게 질문 남겨주시면 되겠습니다.
1. 사칙연산자
컴퓨터는 계산을 빠르게 하기 위해 만들어졌습니다. 당연히 사칙연산을 위한 연산자는 필수겠지요. C언어에서 사칙연산자는 덧셈 + , 뺄셈 - , 곱셈 * , 나눗셈 / 가 쓰입니다. 이러한 일상생활애서도 자주 사용하던 기본적인 연산자는 평소에 쓰던것처럼 그대로 사용하면 되기때문에 예시를 보지 않겠습니다.
2. 논리연산자
이제 수학에서는 보지 못했던 프로그래밍에서 쓰이는 연산자를 알아보겠습니다. 논리연산자는 수학에서 쓰이는 or, and, not에 해당됩니다. or 는 || , and 는 && , not 은 ! 로 쓰입니다. 여기서 & 와 | 는 프로그래밍을 하는 사람이 아니라면 키보드에서 눌러본적 조차 별로 없을텐데요. & 는 쉬프트 + 7 그리고 | 는 쉬프트 + 역슬래시 입니다. 역슬래시는 엔터키 바로위에 있습니다.
논리연산의 결과는 프로그래밍을 배우지 않더라도 대부분 아시겠지만 간략히 설명을한다면
or연산자는 두 피연산자중 하나만이라도 참(true , 1)의 값을 가질 경우 true 결과값을 반환합니다.
and연산자는 두 피연산자중 모두 true일 때만 true 결과값을 반환합니다.
not연산자는 피연산자를 하나만 가지게 되는데 변수앞에 두어 사용하고 피연산자의 반대값을 반환합니다.
if(true || false) //true반환
if(true && false) //false반환
if(true && !false) //true반환
여기서 특이하게 C언어는 true와 false값을 가지는 bool형 변수가 아니더라도 0이 아닌 모든 값을 true, 0인 값을 false라고 인식합니다. 따라서 이를 활용하여 아래와 같이 사용할 수도 있습니다.
if(1 || 0)//true반환
if(100 && 2020) //true반환
if(!100) //false반환
보통 예시처럼 상수가 아니라 값을 가진 변수를 사용하는데 잘 활용한다면 훨씬 다양하게 응용할 수 있겠죠.
3개의 피연산자와 2개의 논리연산자를 사용할 수도 있습니다.
1 || 0 && 1 이런식으로 말이죠. 이러한 식의 경우 사칙연산과 동일하게 앞의 식부터 계산을 하게됩니다.
여기서 주의할점이 있습니다.
예를 들어 0 && 1 && (0+1) 과 같은 식을 쓴다고 가정해보죠.
여기서 &&연산자의 앞 피연산자의 값이 false이므로 다른 피연산자의 값이 무엇이든 &&는 false의 결과를 가집니다.
따라서 C언어에서는 &&연산자에서 먼저 나오는 피연산자의 값이 false일 때 뒤에오는 코드를 실행하지 않습니다.
만약 0 && printf("r u sure that it is print?") 라는 코드를 쓴다면 뒤에 오는 printf문은 수행되지 않고 콘솔에는 아무것도 도 출력되지 않습니다.
따라서 애초에 프로그래밍의 습관을 논리연산자의 피연산자로 값을 계산하는 코드를 작성하지 않도록 습관을 들이는것이 좋겠지만 만약 이러한 코드를 사용하고 싶을 경우 뒤에 오는 코드가 실행되지 않을 수 있다는 점을 염두에 두어야합니다.
3.비교 연산자
비교연산자는 부등호를 의미합니다. 그리고 보통 값의 크기를 알고 싶은 대상을 왼쪽에 두고 사용합니다. 사족을 더하자면 프로그래밍 코드를 남에게 보여주거나 남의 코드를 읽게 될 경우 이렇게 보편적으로 지키는 문법을 습관화 하는것이 나중에 불편하지 않을 것입니다.
만약에 내가 변수 i의 값이 5보다 큰지를 알고 싶다면
i > 5 로 사용합니다. 5 < i 라고 작성한 코드는 제가 본적이 없습니다. 이렇게 하여도 프로그램에 이상은 없지만 암묵적으로 지켜지는 문법입니다.
그리고 크거나 같고 , 작거나 같은 의미의 비교연산자를 사용할 경우도 있을것입니다. 그럴때는 부등호와 등호를 붙여 함께사용하는데 등호가 반드시 오른쪽에 와야합니다. >= , <= 처럼 작성되어야 합니다. 이 또한 마찬가지로 변수를 왼쪽에 두고 사용합니다.
비교연산자 역시 사칙연산과 마찬가지로 앞에서부터 계산해 나갑니다. 하지만 비교 연산자를 사칙연산처럼 사용할 경우 심각한 오류가 발생하는데요
5 <= i <= 10 이라고 작성하여 변수 i가 5와 10사이의 값인지를 알고 싶다고 합시다.
C언어에서는 이렇게 작성을 하면 원하는 결과를 얻을 수 없습니다. 앞에서부터 계산을 해보면 만약 i가 5보다 큰 13이라고 했을 때 첫번째 식에서 true를 반환합니다. 그럼 그다음의 식의 형태는 true <= 10이 되겠죠. C언어에서는 true를 1로 인식하기 때문에 위의 식의 최종결과는 true가 됩니다. i값이 13인데도 불구하고 말이죠.
따라서 위와 같은 코드를 올바르게 작성하려면 논리연산자와 함께 사용하여
5 <= i && i <= 10 와 같이 작성해야합니다. 이 코드의 결과는 한번 머릿속으로 계산해보시길 바랍니다.
4. 전위, 후위 연산자
다음은 전위연산자, 후위연산자로 피연산자 하나를 대상으로 사용하는 연산자입니다. 이는 피연산자의 값을 1증가시키거나 1감소시킨 값을 반환합니다. 그렇다면 +1 혹은 -1을 하면 되지 왜 이런 연산자가 필요하느냐라고 생각하실 수 있지만 저도 정확한 이유를 알 수 없으나 코딩을 하다보면 +1 혹은 -1을 해야할 일이 아주 많은데 이를 편하게 자주 사용하기 위해 만들어 졌고 성능상으로도 더 빠르다고 알고 있습니다.
사용 방법으로는 ++ , -- 로 덧셈과 뺄셈을 붙여 연속해서 사용합니다. 이때 피연산자의 앞에오면 전위연산자, 뒤에오면 후위 연산자라고 합니다. 이 둘의 차이는 해당 피연산자의 값을 변화를 먼저 줄것인지 사용 후 변화를 줄것인지 입니다.
예를 들면 is_variable = is_five++ 라고 사용한다면 변수에 현재 is_five변수의 값을 먼저 대입하고 그 후에 1을 증가시킵니다.
반대로 is_variable = ++is_five라고 사용한다면 is_five의 값을 1증가 시킨뒤 변수를 사용합니다.
전위, 후위 연산자는 반복문에서 가장 많이 사용됩니다.
5. 수정대입 연산자
지금까지의 지식으로는 어떤 한 변수의 값을 5만큼 증가시키기 위해선 i = i + 5라고 작성해야 합니다. 하지만 수정대입 연산자를 사용하면 이를 간단하게 표현할 수 있습니다. i += 5라고 작성하면 위와 같은 결과를 낼 수 있으며 코드를 간략화 할 수 있습니다.
이는 사칙연산의 연산자에서 등호를 붙여 사용하며 덧셈 뺄셈 곱셈 나눗셈 모두 사용할 수 있습니다.
6. 나머지 연산자
보통 사칙연산자와 같이 분류하지만 기초자 분들을 위해 따로 분류하였습니다. 이 연산자는 나눗셈에서 나머지의 값을 구하기 위해 사용됩니다. 15 % 2 를 사용한다면 15를 2로 나눈 나머지 1을 결과로 반환합니다.
이 연산자가 없다면 나머지를 구하기 위해 번거로운 작업을 해야합니다.
나머지 연산자는 수정대입 연산자에도 사용할 수 있고 보통 짝수와 홀수를 구분하거나 나누어 떨어는지 안떨어지는지를 판별하기 위해 많이 사용합니다.
7. 실습
'C언어' 카테고리의 다른 글
C 제8강 - 배열 활용하기 (0) | 2020.02.17 |
---|---|
C 제7강 - 조건문과 반복문 (0) | 2020.02.17 |
C 기초 - printf 와 scanf (0) | 2020.01.19 |
C 제5강 - 자료형과 형변환 (0) | 2020.01.11 |
C 제4강 - 변수와 자료형 (0) | 2020.01.09 |
- Total
- Today
- Yesterday
- 빌드 주기
- c언어강의
- Unreal Header Tool
- 유니티
- 언리얼
- Connecting Jenkins Agent
- 깃 허브 오류 해결
- 언리얼 사용자 정의 구조체
- 언리얼 기초
- 안드로이드
- dfs
- c언어 기초
- 알고리즘
- 언리얼 빌드
- 젠킨스
- C언어기초
- Jenkins Build Periodically
- 안드로이드 구글맵
- Jenkins
- C++
- refusing to run with root privileges
- 구글맵
- 깃 용량문제
- Connecting Jenkins
- 알고리즘기초
- 유니티 직소퍼즐 구현
- Add Node
- UHT
- 백준
- 젠킨스 에이전트 연결
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |