ݺߣ

ݺߣShare a Scribd company logo
C !
http://blog.naver.com/ruvendix
연산자와 피연산자
연산자란 연산을 진행하는 것
피연산자란 연산자에 의해 연산을 당하는 것
10 + 20 = ?
식
초록색은 피연산자
빨간색은 연산자
http://blog.naver.com/ruvendix
연산자의 분류
C언어의 연산자는 크게 3종류로 분류됨!
연산자의 분류 의미
단항 연산자 피연산자 한 개로 연산
이항 연산자 피연산자 두 개로 연산
삼항 연산자 피연산자 세 개로 연산
그럼 이제부터 C언어의 연산자를 하나씩 알아보자!
http://blog.naver.com/ruvendix
단순 할당 연산자(단순 대입 연산자)
메모리에 있는 값을 복사해서 다른 공간으로 넘기려면?
단순 할당 연산자를 사용하라!
int iYear = 2016;
여기에 있는 =은 그냥 초기화 표시일 뿐
iYear = 2017;
여기에 있는 =이 바로 단순 할당 연산자!
단순 할당 연산자는 이항 연산자
http://blog.naver.com/ruvendix
가감승제 그리고 나머지 연산자
산술 연산을 하려면 어떻게 해야 할까?
산술 관련 연산자를 사용하라!
연산자 의미
+ 피연산자끼리 더한다
- 피연산자끼리 뺀다
* 피연산자끼리 곱한다
/ 피연산자끼리 나눈다(0으로 나눌 수 없음!)
% 피연산자끼리 나눠서 나머지를 구한다
(실수는 사용 불가! 마찬가지로 0으로 나눌 수 없음!)
우리에게 가장 익숙한 연산자!
여기에 있는 모든 연산자는 이항 연산자
http://blog.naver.com/ruvendix
복합 할당 연산자
연산의 결과를 바로 할당할 수는 없을까?
복합 할당 연산자를 사용하라!
복합 할당 연산자는 가독성이 떨어지는 단점이 있음!
복합 할당 연산자는 이항 연산자
연산자 의미
+= + 연산의 결과를 할당
-= - 연산의 결과를 할당
*= * 연산의 결과를 할당
/= / 연산의 결과를 할당
%= % 연산의 결과를 할당
http://blog.naver.com/ruvendix
관계 연산자
메모리 공간에 있는 값끼리의 관계를 알아내려면?
관계 연산자를 사용하라!
관계 연산자의 참은 0이 아닌 값, 거짓은 0을 의미!
관계 연산자는 이항 연산자
연산자 의미
< 왼쪽이 오른쪽보다 작으면 참, 아니면 거짓
<= 왼쪽이 오른쪽보다 작거나 같으면 면 참, 아니면 거짓
> 왼쪽이 오른쪽보다 크면 참, 아니면 거짓
>= 왼쪽이 오른쪽보다 크거나 같으면 참, 아니면 거짓
== 왼쪽이 오른쪽과 같으면 참, 아니면 거짓
!= 왼쪽이 오른쪽과 다르면 참, 아니면 거짓
http://blog.naver.com/ruvendix
논리 연산자
메모리 공간에 있는 값끼리의 논리를 알아내려면?
논리 연산자를 사용하라!
논리 연산자의 참은 0이 아닌 값, 거짓은 0을 의미!
논리 연산자는 이항 연산자
연산자 의미
&&
왼쪽과 오른쪽 둘 다 참이면 참,
둘 중 하나만 거짓이면 무조건 거짓
||
왼쪽과 오른쪽 둘 중 하나만 참이면 참,
둘 다 거짓일 때만 거짓
참 && 거짓 => 거짓
참 || 거짓 => 참
http://blog.naver.com/ruvendix
주소 연산자
메모리 공간의 주소를 알아내려면 어떻게 해야 하지?
주소 연산자를 사용하라!
주소 연산자는 포인터와 직접 관련이 있음!
주소 연산자는 단항 연산자
iNum의 주소를 알고 싶다!
그렇다면 &iNum 이렇게 하면 됨!
scanf()에서는 &을 이용해서 메모리 공간에 접근!
그래서 scanf(“%d”, &iNum); 이렇게 되는 것!
http://blog.naver.com/ruvendix
sizeof 연산자
메모리 공간의 크기를 알아낼 방법이 없을까?
sizeof 연산자를 사용하라!
sizeof(int)=> int의 크기를 구함
sizeof(iYear) => iYear의 크기를 구함
연산자 중에는 sizeof처럼 기호가 아닌 것도 있다!
sizeof 연산자는 단항 연산자
http://blog.naver.com/ruvendix
형식 선정 연산자(캐스팅 연산자)
자료형 간의 형식이 서로 다르다면 어떻게 연산하지?
형식 선정 연산자를 사용하라!
int iNum = 10;
double dNum = 10.3;
iNum + dNum;
이럴 때는 컴파일러가
알아서 형식을 변환
(묵시적 형변환)
iNum + (int)dNum;
이럴 때는 일시적으로
형식을 변환하고 연산
(명시적 형변환)
형식을 변환한다고 원본의 형식이 변환되는 건 아님!
형식 선정 연산자는 단항 연산자
http://blog.naver.com/ruvendix
함수 호출 연산자
함수를 호출할 때는 항상 연산자를 사용함!
그 연산자는 바로 함수 호출 연산자!
함수 호출 연산자의 내부 처리 순서는 복잡…
함수 호출 연산자는 단항 연산자지만… 관점에 따라 분류가 달라짐
printf는 함수의 식별자일 뿐...
함수의 식별자는 함수가 시작되는 주소를 의미!
따라서 함수의 식별자로는 함수를 호출할 수 없음!
printf에 ()을 붙여야 완벽한 함수 호출!
printf(“%s”, “함수 호출!”); 이런 식으로~
http://blog.naver.com/ruvendix
전위 증감, 후위 증감 연산자
피연산자의 값을 증가시킬 때 시점을 이용하려면?
증감 연산자를 사용하라!
후위 증감 연산자는 잘 알고 있어야 함!
증감 연산자는 단항 연산자
++iNum과 –iNum은 전위 증감 연산자
값을 무조건 1증감시키고 연산!
iNum++와 iNum--은 후위 증감 연산자
먼저 연산부터 하고 값을 1증감!
(하지만 증감 시점은 예측 불가)
http://blog.naver.com/ruvendix
삼항 조건 연산자
연산자 중 삼항 연산자는 딱 하나 있는데
바로 삼항 조건 연산자!
삼항 조건 연산자는 선택문의 분량을 줄일 때 사용!
다만 가독성이 떨어지는 단점이 있음!
(식) ? (참이면 실행) : (거짓이면 실행);
괄호는 생략해도 되지만 써주는 게 좋음!
http://blog.naver.com/ruvendix
우선순위와 결합성
우선순위에 따라 연산자가 처리되는 순서가 달라짐!
하지만 식에서 완전 분리된 경우, 순서 예측 불가!
결합성은 우선순위가 같을 때 적용되는 규칙!
http://blog.naver.com/ruvendix

More Related Content

연산자

  • 1. C !
  • 2. http://blog.naver.com/ruvendix 연산자와 피연산자 연산자란 연산을 진행하는 것 피연산자란 연산자에 의해 연산을 당하는 것 10 + 20 = ? 식 초록색은 피연산자 빨간색은 연산자
  • 3. http://blog.naver.com/ruvendix 연산자의 분류 C언어의 연산자는 크게 3종류로 분류됨! 연산자의 분류 의미 단항 연산자 피연산자 한 개로 연산 이항 연산자 피연산자 두 개로 연산 삼항 연산자 피연산자 세 개로 연산 그럼 이제부터 C언어의 연산자를 하나씩 알아보자!
  • 4. http://blog.naver.com/ruvendix 단순 할당 연산자(단순 대입 연산자) 메모리에 있는 값을 복사해서 다른 공간으로 넘기려면? 단순 할당 연산자를 사용하라! int iYear = 2016; 여기에 있는 =은 그냥 초기화 표시일 뿐 iYear = 2017; 여기에 있는 =이 바로 단순 할당 연산자! 단순 할당 연산자는 이항 연산자
  • 5. http://blog.naver.com/ruvendix 가감승제 그리고 나머지 연산자 산술 연산을 하려면 어떻게 해야 할까? 산술 관련 연산자를 사용하라! 연산자 의미 + 피연산자끼리 더한다 - 피연산자끼리 뺀다 * 피연산자끼리 곱한다 / 피연산자끼리 나눈다(0으로 나눌 수 없음!) % 피연산자끼리 나눠서 나머지를 구한다 (실수는 사용 불가! 마찬가지로 0으로 나눌 수 없음!) 우리에게 가장 익숙한 연산자! 여기에 있는 모든 연산자는 이항 연산자
  • 6. http://blog.naver.com/ruvendix 복합 할당 연산자 연산의 결과를 바로 할당할 수는 없을까? 복합 할당 연산자를 사용하라! 복합 할당 연산자는 가독성이 떨어지는 단점이 있음! 복합 할당 연산자는 이항 연산자 연산자 의미 += + 연산의 결과를 할당 -= - 연산의 결과를 할당 *= * 연산의 결과를 할당 /= / 연산의 결과를 할당 %= % 연산의 결과를 할당
  • 7. http://blog.naver.com/ruvendix 관계 연산자 메모리 공간에 있는 값끼리의 관계를 알아내려면? 관계 연산자를 사용하라! 관계 연산자의 참은 0이 아닌 값, 거짓은 0을 의미! 관계 연산자는 이항 연산자 연산자 의미 < 왼쪽이 오른쪽보다 작으면 참, 아니면 거짓 <= 왼쪽이 오른쪽보다 작거나 같으면 면 참, 아니면 거짓 > 왼쪽이 오른쪽보다 크면 참, 아니면 거짓 >= 왼쪽이 오른쪽보다 크거나 같으면 참, 아니면 거짓 == 왼쪽이 오른쪽과 같으면 참, 아니면 거짓 != 왼쪽이 오른쪽과 다르면 참, 아니면 거짓
  • 8. http://blog.naver.com/ruvendix 논리 연산자 메모리 공간에 있는 값끼리의 논리를 알아내려면? 논리 연산자를 사용하라! 논리 연산자의 참은 0이 아닌 값, 거짓은 0을 의미! 논리 연산자는 이항 연산자 연산자 의미 && 왼쪽과 오른쪽 둘 다 참이면 참, 둘 중 하나만 거짓이면 무조건 거짓 || 왼쪽과 오른쪽 둘 중 하나만 참이면 참, 둘 다 거짓일 때만 거짓 참 && 거짓 => 거짓 참 || 거짓 => 참
  • 9. http://blog.naver.com/ruvendix 주소 연산자 메모리 공간의 주소를 알아내려면 어떻게 해야 하지? 주소 연산자를 사용하라! 주소 연산자는 포인터와 직접 관련이 있음! 주소 연산자는 단항 연산자 iNum의 주소를 알고 싶다! 그렇다면 &iNum 이렇게 하면 됨! scanf()에서는 &을 이용해서 메모리 공간에 접근! 그래서 scanf(“%d”, &iNum); 이렇게 되는 것!
  • 10. http://blog.naver.com/ruvendix sizeof 연산자 메모리 공간의 크기를 알아낼 방법이 없을까? sizeof 연산자를 사용하라! sizeof(int)=> int의 크기를 구함 sizeof(iYear) => iYear의 크기를 구함 연산자 중에는 sizeof처럼 기호가 아닌 것도 있다! sizeof 연산자는 단항 연산자
  • 11. http://blog.naver.com/ruvendix 형식 선정 연산자(캐스팅 연산자) 자료형 간의 형식이 서로 다르다면 어떻게 연산하지? 형식 선정 연산자를 사용하라! int iNum = 10; double dNum = 10.3; iNum + dNum; 이럴 때는 컴파일러가 알아서 형식을 변환 (묵시적 형변환) iNum + (int)dNum; 이럴 때는 일시적으로 형식을 변환하고 연산 (명시적 형변환) 형식을 변환한다고 원본의 형식이 변환되는 건 아님! 형식 선정 연산자는 단항 연산자
  • 12. http://blog.naver.com/ruvendix 함수 호출 연산자 함수를 호출할 때는 항상 연산자를 사용함! 그 연산자는 바로 함수 호출 연산자! 함수 호출 연산자의 내부 처리 순서는 복잡… 함수 호출 연산자는 단항 연산자지만… 관점에 따라 분류가 달라짐 printf는 함수의 식별자일 뿐... 함수의 식별자는 함수가 시작되는 주소를 의미! 따라서 함수의 식별자로는 함수를 호출할 수 없음! printf에 ()을 붙여야 완벽한 함수 호출! printf(“%s”, “함수 호출!”); 이런 식으로~
  • 13. http://blog.naver.com/ruvendix 전위 증감, 후위 증감 연산자 피연산자의 값을 증가시킬 때 시점을 이용하려면? 증감 연산자를 사용하라! 후위 증감 연산자는 잘 알고 있어야 함! 증감 연산자는 단항 연산자 ++iNum과 –iNum은 전위 증감 연산자 값을 무조건 1증감시키고 연산! iNum++와 iNum--은 후위 증감 연산자 먼저 연산부터 하고 값을 1증감! (하지만 증감 시점은 예측 불가)
  • 14. http://blog.naver.com/ruvendix 삼항 조건 연산자 연산자 중 삼항 연산자는 딱 하나 있는데 바로 삼항 조건 연산자! 삼항 조건 연산자는 선택문의 분량을 줄일 때 사용! 다만 가독성이 떨어지는 단점이 있음! (식) ? (참이면 실행) : (거짓이면 실행); 괄호는 생략해도 되지만 써주는 게 좋음!
  • 15. http://blog.naver.com/ruvendix 우선순위와 결합성 우선순위에 따라 연산자가 처리되는 순서가 달라짐! 하지만 식에서 완전 분리된 경우, 순서 예측 불가! 결합성은 우선순위가 같을 때 적용되는 규칙!