일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 아두이노 컴파일러
- Arduino
- 수광 소자
- queue
- Algorithm
- Deque
- stl
- WinAPI
- 시스템프로그래밍
- Array
- 자료구조
- 통계학
- C언어
- Visual Micro
- c++
- set
- map
- vector
- arduino compiler
- html
- 컴퓨터 그래픽스
- 라인트레이서
- 운영체제
- list
- Stack
- directx
- 아두이노 소스
- priority_queue
- 아두이노
- LineTracer
- Today
- Total
Kim's Programming
C언어 - 연산자(1/2) 본문
오늘의 포스팅에서는 연산자에 대해서 알아 보겠습니다. 연산자란 뭐 다들 익히 알고 있듯이 사칙 연산은 기본으로 알고 있음을 봤을 때 연산자가 어떤 역할을 하는 지, 어떤것 인지는 충분히 다들 알 고 있습니다. 우선 연산자의 기능별 종류를 알아 보도록 하겠습니다.
연산자 기능별 종류 |
연산자 표기 |
산술 연산자 |
+ - * / % |
부호 연산자 |
+ - |
대입 연산자 |
= 복합대입연산자 |
관계 연산자 |
== != <= ,< >= > |
증감 연산자 |
++ -- |
포인터 연산자 |
* & [] |
구조체 연산자 |
. -> |
논리 연산자 |
|| && ! |
비트 연산자 |
| & ~ >> << |
삼향 조건 연산자 |
? : |
쉼표 연산자 |
, |
sizeof 연산자 |
sizeof |
캐스트 연산자 |
(type) type() |
괄호 연산자 |
() |
C++연산자 |
new delete :: .* ->* |
1. 산술 연산자
산술 연산자란? 더하고 곱하고 빼고 나누는 가장 많이 사용되는 연산입니다. 프로그래밍에서의 산술을 하기 위한 기본적인 연산자인데, 수학과 마찬가지로 + -는 수학기호와 같은 기호를 사용 하게 됩니다. 하지만 곱하기의 경우는 알파벳 X와 혼동이 되기때문에 *를 사용하고 나누기의 경우 키보드에서 할당된 문자가 없으므로 / 로 사용하여 표현을 합니다.
산술연산자 계산에서는 피 연산자가 모두 정수형이면 결과도 정수형이고 하나라도 실수형이라면 결과는 실수형이 됩니다. 예시를 들어보겠습니다.
1
2
3 |
4/2 //결과 2
3.0/2.0 //결과 1.5
5/4 //결과 1 |
cs |
4/2같은 경우 정수와 정수의 나누기 계산이기 때문에 결과는 2가 나오게 됩니다. 정수형과 정수형의 계산은 정수입니다. 3.0/2.0의 계산은 실수와 실수의 계산이 되게 됩니다. 그래서 1.5가 나오게 되는데 만약 저것이 정수형 으로 표현되어 3/2로 되어있었다면 1만 나오게 됩니다. 1.5라는 결과 값중 정수인 1만 표기되기 때문입니다.
예시 코드입니다. 5개의 숫자를 더하여 평균을 구하게 되는 것인데 14 , 54, 23, 27, 50을 더하여 평균을 구하는 소스를 짜보도록 하겠습니다.
1
2
3
4
5
6
7
8
9 |
#include<stdio.h>
void main()
{
int numbers = 0;
numbers = 14 + 54 + 23 + 27 + 50;
printf("총합 = %d, 평균=%d\n", numbers, numbers / 5);//33.6
} |
cs |
단순하게 총합과 평균을 구하게 되는 print함수를 표현한 것입니다. 결과를 확인해보겠습니다.
음 총합은 168 계산이 잘 되었군요. 하지만 평균값에서 무너가 이상함이 보이지 않나요? 168을 5로 나누면 평균값은 33.6이 나와야 합니다. 하지만 저기서 표기는 33으로 표기가 되었습니다. 위에서 말 했던 대로 정수형과 정수형을 나눴기 때문에 정수부분만 표기하게 되는 것입니다. 소수점 자리를 버리는 것을 계획하고 있었다면 저렇게 쓰는 것도 올바른 방법이긴 하지만, 소수점 까지 정밀하게 표현을 해야한다면 number를 float형 등의 실수형으로 선언을 하거나 아니면 나누기의 분모를 5가 아닌 5.0으로 하여 둘중 하나가 실수 형임을 밝혀서 실수형으로 표기되도록 하여야 합니다. 위의 모든 경우들은 나누기로만 예시를 들었지만 사칙연산의 4개 모두 해당이 됩니다. 하지만, 산술 연산자가 아직 하나 남았습니다. 그것은 바로 %라는 연산자입니다.
%연산자는 나누기가 몫을 리턴 하는 것과는 다르게 몫은 버리고 리턴을 시켜 나머지를 출력하게 됩니다. 나머지를 7%3 은 1의 값이 나오고 4%2의 값이 0이 나오는 값이 나오는 것을 안다면 사실 나머지 연산의 기능은 충분히 활용 할 수 있습니다. 하지만 나머지 연산을 어디서 확인을 할 수 있을까요? 바로 짝수와 홀수를 구별 할 때 대표적으로 쓸 수 있습니다. 짝수의 경우 2로 나누었을때 나머지가 0인 수이고 홀수의 경우 2로 나누었을 경우 나머지가 1인수가 되기 때문에 이것으로 구별이 가능합니다. 또 나머지값에 따라서 (예를 들어 3으로 나눴을 경우 나올 수 있는 나머지 값은 0, 1, 2 세가지가 있다.) 조건을 나누고 싶은 경우에는 switch(n%3)등의 형태를 이용하여 함수를 짤 수도 있습니다. 나머지 연산자는 정수를 받아서 정수로 값을 리턴을 해주며 실수형으로 계산을 하였을 경우에는 에러를 출력하게 됩니다.
2. 부호 연산자
부호 연산자는 산술 연산자와 비슷하게 생긴 형태로 + 와 - 의 형태를 가지고 있습니다. 부호 연산자의 역할은 변수의 부호를 바꿔주는 역할을 합니다. 만약에 num_1에 10이라는 값을 가지고 있었다면 -num_1이라는 형태의 변수는 -10의 값을 가지고 있는 것입니다. 물론 반대로 도 가능합니다.(음수를 가진 변수에 - 를 붙여주면 양수 변수가 됩니다.)
몇개 예시를 들어보겠습니다. 산술 연산자와 합쳐 졌을 때의 부호 연산자입니다. 소스를 한번 알아 보겠습니다.
a와 b를 계산하는 여러가지 경우입니다. 첫 번째와 두 번째의 경우는 계산이 사칙연산처럼 되어있기 때문에 간단하게 알아 볼 수 있습니다. 헷갈리는 것은 세번째와 4번째의 경우입니다. 하지만 우선 이 4개 모두 정상적으로 계산 될까요? 답은 아니다 입니다. 위에 연산자를 기능별로 나누어 놓은것과 한 번 번갈아 보게 되면 잘못된 점을 찾을 수 있겠지만 이 조차도 헷갈리는 분들을 위해 알려드리겠습니다. 3번째의 경우를 보면 a + -b 는 a와 - 부호연산자가 붙은 b를 더하겠다 라는 의미를 갖게 되어 정상적으로 계산이 되는 것이 맞습니다. 하지만 4번 째것을 보게 되면 표면적으로 보이는 의미는 a에서 b에 - 부호연산자가 붙은 b값을 뺀다인데 실제 표기로는 --로 되어 있습니다. --는 사칙연산도 부호 연산자도 아닙니다. 위에서 표에서 볼 수 있듯이 이는 증감 연산자의 가감 연산자를 의미하는 것입니다. 그렇기 때문에 이는 정상적으로 표시가 되지 않습니다. 하지만 이런 계산 언젠가는 할텐데 이게 안되면 어떻게 하냐고요? 그때는 괄호를 이용 하면 간단하게 해결할 수 있습니다. a - ( -b) 로 표기를 하면 컴파일 과정에서 증감 연산자가 아니라 부호 연산자와 산술 연산자가 나눠 져있구나를 구별 할 수 있게됩니다.
부호연산자는 사실 기본적으로 표기되는 숫자의 부호는 +이기때문에 +는 필요 없다고 생각이 되지만 unsigned가 있어서 signed가 있듯 대칭적으로 +가 있습니다. 딱히 있어서 좋은 기능이라고 하자면...
1
2
3
4
5
6
7
8
9 |
#include<stdio.h>
void main()
{
int num_1 = -1; int num_5 = -1;
int num_2 = 3; int num_6 = +3;
int num_3 = -6; int num_7 = -6;
int num_4 = 6; int num_8 = +6;
} |
cs |
뭐.. 줄이 좀 이쁘게 정렬 할 수 있다는것? 정도 밖에는 없습니다^^:;
3. 대입 연산자
대입연산자란, 말그대로 대입, 변수에 대입하는 연산자를 의미 합니다. 대입연산자 중 가장 흔하디 흔한것이 바로 = 기호입니다. num라는 변수에 10이라는 값을 대입시켜주려면 = 기호를 사용하여 다음과 같이 표기합니다. num=10; , = 기호는 왼쪽에 있는 값에 오른쪽 값을 대입하게 됩니다. 또한 우변이 수식으로 이루어 졌을 경우엔 계산을 해서 나온 결과 값을 왼쪽에 대입시켜줍니다. 예시를 들어 number = 2+3; 이라는 것이 있음 number라는 변수에는 5라는 값이 대입되게 됩니다. 물론 2+3으로 적으나 미리 계산을 해서 5라고 적어 놓으나 5로 표기되는 것은 차이가 없습니다. 우변에는 함수, 문자, 숫자, 등등 계산값을 낼 수만 있다면 어떠한것도상관이 없는데 좌변값의 경우는 좀 정해진 경우인 경우가 많기 때문에 좌변, 대입 연산자의 좌항에 대해서 자세히 알아 보겠습니다.
좌변값
대입연산자의 좌항에는 좌변값(Ivalue:left value)만 올수 있는데 좌변값이란 대입 연산자의 왼쪽에 올 수 있는 값이라는 뜻을 의미 합니다. 더 정확하게말하자면 좌변값이란 실제 메모리를 점유중인 것이며, 값을 마음대로 바꿀 수 있는 대상을 의미합니다. 예를 들어 int i; 라고 선언을 해놓으면 이것은 메모리의 일부를 차지를 하고 있으며 대입을 하는 대로 바로바로 값을 바꿀 수 있기 때문에 i=3이라는 형태가 가능하게 됩니다. 되는 경우 보단 안되는 경우를 따지는 것이 더 좋기 때문에 안되는 여러가지 경우를 알려드리겠습니다.
1
2 |
3 + 4 = 1;
a + b = 10; |
cs |
다음 두 경우를 살펴 보겠습니다. 첫 번째의 경우 왼쪽의 경우 좌변값 I-value에 해당해야하는 변수도 아니고, 메모리를 점유중이지도 않은 그냥 수입니다. 또한 3+4를 그냥 숫자인 1에 대입하라는 것도 말이 되지 않습니다. 다음 두 번째의 경우는 좌변이 변수로는 이루어는 져 있습니다. 하지만 변수로된 수식은 좌변값이라고 할 수가 없습니다. 이를 꼭 그대로 이용 해야겠다 싶다면 a 나 b 중 한개를 이항시켜서 b= 10 -a라던지 a= 10 - b따위로 나타내면 이용 할 수 있습니다.
연산자의 리턴값
C언어의 연산자는 연산후에 그 결과를 돌려주며 그 돌려주는 결과값을 리턴값이라고 합니다. 리턴값이란 본디 함수에서의 계산 결과를 의미하지만 연사 또한 함수의 일종이기 때문에 연산결과를 리턴 값이라고 칭합니다. 만약 리턴을 하지 않는다면? 어떻게 될 까요?
1 |
a = 4 + 10; |
cs |
라는 간단한 식이 있습니다. 위의 식의 경우에서는 오른쪽 항이 4 와 10이라는 숫자가 +라는 연산자로 조합이 되어있습니다. 이는 리턴이 되어 4+10=14라는 값이 계산이 되어 리턴이 되고 리턴된 14라는 값이 a로 들어 가게 됩니다. 하지만 리턴이 되지 않는다면 4와 10이 더해져서 14라는 값은 나오겠지만 14라는 값이 a에 들어가지는 않아서 변수에 저런식으로는 값을 대입하기는 불가능 할 것입니다. 또 14가 대입된 a는 거기서 또 결과값 14를 리턴하게 됩니다. 그렇기 때문에 a 자체를 또 다른 수식에 그대로 이용 할 수도 있습니다.
또 다른 예시입니다.
1
2
3 |
a=3;
b=3;
c=3; |
cs |
보통 각각의 변수에 3을 대입하려면 이와같이 각각의 변수마다 = 상수 의 형태로 대입을 해주어야 합니다. 하지만 리턴하는 원리를 이용하면 다음과 같이 활용할 수도 있습니다.
1 |
a = b=c=3; |
cs |
c에 3값을 넣고 다시 리턴을 하고 나면 c의 결과값 3이 b로 리턴되고 b의 결과값이 a로 리턴이 되게 되어 결국엔 a,b,c 모든 변수의 값이 3을 가지게 되는 결과가 나오게 되는 것입니다.
복합 대입 연산자
복합 대입 연산자는 대입 연산자와 다른 연산자가 합쳐진 경우입니다. 예시와 함께 설명하겠습니다.
1 |
a=a=+3; |
cs |
다음과 같은 식은 보통의 우리가 알고 있는 수학에서는 존재하지 않는 형태의 식입니다. 하지만 프로그래밍에서는 기존의 a값에 +3을 시킨 값을 a에 저장하라는 의미로 쓰입니다. 변수의 현재값을 기준으로 해서 증감을 시킬때 이런 방식을 사용합니다. 이러한 식의 형태처럼 좌변에 있는 변수가 우변의 수식에 포함되어 있는 경우에는 복합 대입 연산자라는 것을 이용하여 더 간단하게 바꿀 수 있습니다. 다음의 식은 다음과 같이 변화 시킬 수 있습니다.
1 |
a+=2 |
cs |
이렇게 나타낸 식중에 +=를 복합 연산자 라고 하며 더 짧아지게 만들 수 있는 것입니다. 아니 그렇다면 a=a+3이나 a+=2나 다를 것이 없는데 그냥 식을 쓰는게 더 낫지 않냐고 라고 말하는 사람이 있을 수 있겠으나. 다음 예시로 설명을 또 해보겠습니다.
1
2 |
veryLongLongLongVariable = veryLongLongLongVariable+2;
veryLongLongLongVariable += 2 ; |
cs |
다음과 같이 킨 변수가 있다면. 여러분의 눈에는 어떤 것이 더 치기 좋고 간편해 보이나요? 당연히 두번째 줄이겠지요? 변수명이 길어 졌을 경우에 복합대입 연산자를 이용하면 더 짧게 더 간단하게 표현 할 수 있습니다. 이런 긴 변수의 경우일 뿐만 아니라 구조체, 배열, 포인터 등이 섞여 있는 복잡한 표현식의 경우도 복합대입 연산자를 쓰는 편이 더 편하게 됩니다. + 연산자 뿐만 아니라 산술, 비트 연산자들도 복합대입 연산자가 될 수 있습니다. 연산자 x에 대한 복합대인 연산자의 경우는 x=으로 하면 됩니다.
4. 증감 연산자
증감연산자란 말 그대로 피연산자를 1씩 증가시키거나 감소시키는 역할을 하는 연산자 입니다. 루프 제어 변수 처럼 순서대로 어느 작업을 할 때 변수값을 하나씩 증감시키는 경우가 많기 때문에 증감 연산자가 따로 존재합니다. 1씩 증가 시키는것은 다음과 같습니다.
- x = x + 1;
- x += 1;
- x++;
음.. 근데 이 증감 연산자 x++ 어디서 많이 보았지 않나요? 네 맞습니다. 앞에서 조건문중 for문 할때 있었습니다. for문에서 증감 들어가는데에 i++등으로 넣어서 활용했었죠. 네 위에 3개 전부 for문의 증감에 사용할 수 있는 식들 입니다.
전위형과 후위형
증감 연산자에 사용에는 전위형과 후위형이 있습니다. 전위형과 후위형에 대해서 일단 먼져 보고 설명 가곘습니다.
- 전위형(prefix) : 증감 연산자가 피연산자 앞에 위치하는 경우 ++x --x
- 후위형(postfic) : 증감 연산자가 피연산자 뒤에 위치하는 경우 x++ x--
증감 연산자의 사용은 다음과 같이 2가지 경우로 나뉘어 집니다. 일반적으로 두 가지의 경우는 별 차이가 없습니다. 하지만 수식 내에서는 차이가 있습니다. 전위형은 값을 증가시킨후 결과를 리턴, 후위형은 결과를 리턴한후 값을 증가시킨다는 차이가 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12 |
#include<stdio.h>
void main()
{
int i = 4;// 값 초기화
//증감 연산자(후위형)
printf("i의 값은%d 입니다\n", i++);//출력
i = 4;//다시 값 4로 ~
//증감 연산자(전위형)
printf("i의 값은%d 입니다\n", ++i);//출력
} |
cs |
다음의 소스를 통해서 전위형과 후위형의 차이를 알 수 있습니다. 증감 연산자는 printf 안에 넣어 두었습니다. (만약 printf 바로 위에 증감 연산자를 써주게 되면은 수식안의 증감 연산자가 아니라 단순 증감만 하는 경우 입니다. 그렇기 때문에 printf안에 넣어주었습니다). printf를 먼져 할 것인지 변수 증가를 먼져 시켜줄 것인지 후위형과 전위형에 따라서 변화됨을 보여주는 결과는 다음과 같습니다.
전위형은 증가를 시킨후 출력을 시켰음을 볼 수 있습니다.
증감연산자는 어디에서든 쓸 수 있습니다. 하지만, 2씩 증가시킬때는 ++++x 라고 선언하면 될 것 같다는 생각하는 사람들이 있겠지만 결코 그렇지 않습니다. 1씩 증가시킬때만 사용 할 수 있으며 2씩 증가시키고 싶다면 전에 배웠던 복합 대입 연산자를 이용하는 것이 현명합니다 x+=2; 와 같이 선언하면 됩니다. 이조 차도 헷갈린다. 좋습니다. x=x+2로 해도 전~~~~~~혀 상관 업습니다.
5. 관계 연산자
논리 연산자는 피 연산자를 2 개 취하는 이항 연산자이며 좌변과 우변을 비교하여 같은지 어느 쪽이 더 큰지 작은지를 판단하는 연산자입니다. 앞에서는 조건문 if문에서 사용을 자주 하였는데. 우선 종류 부터 다시 알라보도록 하겠습니다.
연산자 |
조건 |
a==b |
좌변과 우변이 같다 |
a!=b |
좌변과 우변아 다르다 |
a>b |
좌변이 우변보다 크다 |
a<b |
좌변이 우변보다 작다 |
a>=b |
좌변이 우변보다 크거나 같다. |
a<=b |
좌변이 우변보다 작거나 같다. |
위의 논리 연산자들은 IF문에서 자주 썼었습니다. 밑의 4개 관계연산자는 그 결과가 참이면 1을 리턴 거짓이면 0을 리턴합니다. 이런 원리를 이용하여 if문 등에서 사용을 하게됩니다. 앞에서 자주 자주 사용 했으므로 간단하게 소개만 하고 넘어가겠습니다.
6. 논리 연산자
논리 연산자는 주로 관계연산자와 함께 사용되며 두 개 이상의 조건식을 결합하여 하나의 진리값을 만들어 내게됩니다. 논리 연산자는 다음 3가지가 있습니다.
연산자 |
의미 |
설명 |
! |
논리 부정(NOT) |
논리식의 진위를 반대로 만든다 |
&& |
논리 곱(AND) |
두 논리식이 모두 참일때 참 |
|| |
논리 합(Or) |
두 논리식중 하나만 참이어도 참 |
논리 부정
논리부정 !연산자는 조건ㄴ식 하나를 피 연산자로 취하는 단항 연산자로, 조건식을 반대로 만ㄷ느는 역할을 하는 연산자 입니다. 조건문의 평가 결과가 참이면 거짓으로 거짓이면 참으로 바꿔줍니다. 예시를 통해서 알아 보도록 하겠습니다.
1 |
if ( value == 1); |
cs |
조건문을 할때 흔하고 볼 수 있던 식입니다. 이게 의미하는 의미는 다들 봤기 때문에 조건에 따라서 명령이 실행되고 안되고라는 것을 알 수 있을 것 입니다. 하지만. 이를 부정 하는 방법 2가지를 알아보겠습니다.
1
2 |
if ( !(value == 1));
if( value != 1); |
cs |
사실 둘다 결론적으로는 같은 의미잆니다. 첫 번째 것은 value가 1이다를 부정을 시킨것이고 두 번째 것은 value가 1이 아니다를 나타 내는 것이기 때문에 결과적으로는 같은 의미를 하고 있는 것입니다.
논리 곱 과 논리 합
&& 연사자와 || 연산자는 두 개의 논리식을 피연산자로 가지는 이항 연산자이며 두 논리식의 값을 정해진 규칙에 따라 결합하여 하나의 진리값을 만들게 됩니다. 논리식 두 조합에 따라 어떻게 값이 정해 지는지 표를 통해 알아보겠습니다.
좌변 논리식 |
우변 논리식 |
&& 연산자 |
|| 연산자 |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
TRUE |
TRUE |
FALSE |
FALSE |
TRUE |
FALSE |
FALSE |
FALSE |
FALSE |
&&연산자는 둘다 참일때 참을 둘다 거짓일때 거짓을 출력합니다. 하지만 ||연산자는 둘중 하나만 참이면 전부 다 참이 됩니다. 또 조건식이 3개 이상의 판단도 가능합니다 복잡하면 괄호를 이용하여 간편하게 볼 수 있도록 묶어주면 됩니다.
왜 논리 곱과 논리합을 사용할까요? 간단한 소스를 이용해서 알아보겠습니다. 만약 논리곱을 이용해 x 는 1이면서 4이라고 표현을 하지않고 표현을 하려면 다음과 같이 나타내야 합니다.
1
2
3
4
5
6
7 |
if ( x == 1)
{
if( x == 4)
{
//명령
}
} |
cs |
7줄이나 자치하게 되었네요 하지만 논리 곱을 이용하여 이 것을 표현한다면?
1
2
3
4 |
if ( x == 1 && x ==4)
{
//명령
} |
cs |
다음과 같이 4줄로 간편하게 표현할 수 있습니다. 이런 점 때문에 논리 연산자를 이용하게 됩니다. 또 논리 연산자는 불필요한 연산을 하지 않습니다. 만약에 if(x==3 || x==4) 라는 조건이 있을때 좌변이 참으로 만족을 하게 되면 우변을 하든말든지 간에 TRUE값을 가지기 때문에 우변을 따로 판단 할 거 없이 TRUE로 판단을 해버립니다. 이렇게 우변을 생략하게 되면 불필요한 연산을 하지 않아지기 때문에 속도가 높이게 되는데 컴파일러에서 지원하는 기능이며 이 기능을 쇼트 서킷(Short Circit)이라고 부릅니다. 컴파일러에 따라서 안되는 경우도 있지만 웬만한 경우 다 지원한다고 합니다. 하지만 의미 없어 보이는 이 쇼트 서킷이 안정성을 높이는 데도 효과적입니다. 안정성이 필요한 것은 다음 예시를 확인하면 확인할 수 있습니다.
1
2
3
4 |
if ( x !=0 && y/ x ==3)
{
//명령
} |
cs |
다음과 같은 경우는 x가 0이 아니면서 y를 x로 나눈것이 3일 때 참이되어 조건을 실행하는 것입니다. 하지만 쇼트 서킷 기능이 없으면서 x가 0이라면? 쇼트 서킷이 있을경우에 x가 0이라면 좌변 논리식에 만족하지 않기 때문에 거짓으로 판단해버리고 우변 논리식에는 대입하지 않게 됩니다 하지만, 쇼트 서킷이 없으면서 x가 0이라면? 우변 논리식에도 적용이 되기 때문에 분모가 0이 퇴는 치명적인 오류를 범하게 됩니다. 쇼트 서킷이 없으면 다음과 같이 바꿔서 쓸 수 밖에 없습니다.
1
2
3
4
5
6
7 |
if ( x != 0)
{
if(y/x==3)
{
//명령
}
} |
cs |
이렇게 쓰지 않으면 길어지더라도 오류를 범 할 수 밖에 없습니다. 이러한 쇼트 서킷을 사용하기 위해서는 위의 식을 예시로 들었을때 x가 0인지 아닌지를 판단하는 판단식이 좌측에 있어햐 합니다. 물론 &&연산자나 ||연산자는 좌우 논리식에 대한 교환법칙이 성립합니다. 하지만 순서에 따라서 나오는 결과값이 치명적일 수 있기 때문에 논리식 배치를 잘 해야합니다. 다음 포스팅에서 계속 알아보도록 하겠습니다.
'Programming > C' 카테고리의 다른 글
C언어 - 함수(function)(1/4) (0) | 2015.07.30 |
---|---|
C언어 - 연산자(2/2) (1) | 2015.07.22 |
C언어 - 제어문! 소스 일부를 통제한다!(2/2) (0) | 2015.07.15 |
C언어 - 제어문! 소스 일부를 통제한다!(1/2) (2) | 2015.07.15 |
C언어 - 입력함수인 scanf를 써보자 (0) | 2015.07.14 |