JUST GO
[C] 연산자(2) 본문
ex - 증감 연산자의 사용 예
#include <stdio.h>
int main(void)
{
int index1 = 0, index2 = 0;
int current1, current2;
float x1 = 0.5F, x2 = 0.5F;
float y1, y2;
current1 = index1++; // 증가 전의 index1 (current1에는 0 - 후 반영)
printf("index1 = %d, current1 = %d\n", index1, current1);
current2 = ++index2; // 증가 후의 index2 (current2에는 1 - 선 반영)
printf("index2 = %d, current2 = %d\n", index2, current2);
y1 = x1++; // 증가 전의 x1(실수형에도 증감 연산자를 사용할 수 있다)
printf("x1 = %.2f, y1 = %.2f\n", x1, y1);
y2 = ++x2; // 증가 후의 x2
printf("x2 = %.2f, y2 = %.2f\n", x2, y2);
return 0;
}
C프로그래밍 vs C++프로그래밍
- C프로그래밍, test.c
#include<iostream> // 사용 불가
#include<stdio.h> // 데이터선언부, 헤더파일 선언
using namespace std;
int main(void){ // 주함수 선언, 진입점 함수
printf("Hello! \n");
cout<<"good"<<endl; // .c 파일에서는 사용 불가
return 0; // 프로그램 종료 의미
}
- C++프로그래밍, test.cpp
#include<iostream> // 데이터선언부, 헤더파일 선언
using namespace std;
int main(void){ // 주함수 선언, 진입점 함수
printf("Hello! \n");
cout<<"good"<<endl; // .cpp 파일에서는 사용 가능하다
return 0; // 프로그램 종료 의미
}
대입 연산자
- 연산자의 좌변에 있는 변수(l-value)에 우변의 값(r-value)을 저장
- 대입 연산자의 좌변에는 변수만 올 수 있다.
대입 연산식의 값
- 대입 연산자의 좌변에 있는 변수의 값이 대입 연산식의 값
ex - 대입 연산식의 값
#include <stdio.h>
int main(void)
{
int a = 0;
double b = 0;
int c = 0;
a = 123; // a에 123 저장
printf("a = %d\n", a);
printf("a = %d\n", a = 456); // a에 456 저장 후 a의 값이 수식의 값
printf("b = %f\n", b = a + 0.5); // b에 a + 0.5 저장 후 b의 값이 수식의 값
printf("c = %d\n", c = printf("ABC\n")); // printf 함수의 리턴 값을 c에 저장하고 c의 값이 수식의 값
return 0;
}
복합 대입 연산자
- 좌변의 변수를 피연산자로 이용해서 연산을 수행하고 연산의 결과를 다시 좌변의 변수에 대입한다.
복합 대입 연산자의 활용
ex - 복합 대입 연산자의 활용
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int items = 0; // 전체 항목 수
int pages = 0;
int items_per_page = 0; // 한 페이지 당 항목 수
printf("항목수? ");
scanf("%d", &items);
printf("한 페이지 당 항목수? ");
scanf("%d", &items_per_page);
pages = items / items_per_page; // 페이지 수
items %= items_per_page; // 남은 항목 수
printf("%d 페이지와 %d 항목\n", pages, items); // 나머지 연산의 결과를 다시 items에 저장하므로 left 변수가 필요 없다.
return 0;
}
복합 대입 연산자의 우선순위
관계 연산자
- 두 수의 값을 비교하기 위한 연산자
- 관계 연산식의 값은 항상 참 또는 거짓
- C에서 참(true)은 1이고, 거짓(false)은 0이다.
관계 연산자 사용 시 주의 사항
- 두 값이 같은지 비교할 때는 =가 아니라 ==를 이용해야 한다.
- 실수를 비교할 때는 오차를 고려해야 한다.
- 10 < x < 20과 같은 수식을 사용해서는 안된다.
참, 거짓의 판단
- C에서는 수식이 참인지 거짓인지 판단할 때, 0이 아닌 값은 참으로 간주한다.
논리 연산자
- 참과 거짓을 이용한 논리 연산 기능
- 연산의 결과가 항상 참(1) 또는 거짓(0)
- 피연산자가 0이 아니면 참으로 간주한다.
ex - 논리 연산자의 사용 예
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int month;
printf("몇 월? ");
scanf("%d", &month);
if (month >= 6 && month <= 8) // 논리 AND
printf("성수기 요금 적용\n");
if (month < 6 || month > 8) // 논리 OR
printf("일반 요금 적용\n");
//if (!(month) ?= 6 && month <= 8)) // 논리 NOT
// printf("일반 요금 적용\n");
return 0;
}
논리 연산자 사용시 주의 사항
- 관계 연산자과 함께 사용하면 관계 연산자부터 수행된다.
- && 연산자가 || 연산자보다 우선순위가 높다.
논리 연산자의 단축 계산
- 'expr1 && expr2'에서 expr1이 거짓이면 expr2는 평가되지 않는다.
즉, expr2는 expr1이 참일 때만 평가된다.
- 'expr1 || expr2'에서 expr1이 참이면 expr2는 평가되지 않는다.
즉, expr2는 expr1이 거짓일 때만 평가된다.
비트 연산자
- 피연산자의 각 비트 단위로 수행되는 연산자
비트 논리 연산자
- 논리 연산자가 피연산자의 전체 값으로 연산을 수행하는 반면에, 비트 논리 연산자는 각 비트에 대하여 연산을 수행한다.
- &, |, ^ 연산자는 피연산자의 데이터형이 일치하지 않으면 형 변환을 수행하여 같은 형으로 만든 후, 피연산자의 각 비트에 대하여 비트 논리 연산을 수행한다.
비트 AND(논리곱) 연산
- 비트마스크(bitmask) 또는 마스크(mask)
비트 논리 연산에서 이용되어 특정 비트 값을 조작하기 위한 목적의 데이터
x와 y를 비트 AND 연산하면 x의 값 중에 y의 비트가 1인 부분의 값만 유지되고, 나머지 비트는 모두 0이 된다.
비트 OR 연산
- x와 y를 비트 OR 연산하면 x의 값 중에 y의 비트가 0인 부분의 값만 유지되고, 나머지 비트는 모두 1이 된다.
비트 XOR 연산
- x와 y를 비트 XOR 연산하면 x의 값 중에 y의 비트가 1인 부분은 토글되고, y의 비트가 0인 부분의 값은 유지된다.
'C > 학습내용' 카테고리의 다른 글
[C] 제어문(switch문) (0) | 2022.10.05 |
---|---|
[C] 제어문(if문) (0) | 2022.10.05 |
[C] 연산자(3) (1) | 2022.10.05 |
[C] 연산자(1) (0) | 2022.10.05 |
[C] C언어와 프로그래밍 개요 (0) | 2022.10.05 |