[C#이 보이는 그림책] 2. 연산자
Key point
- 연산자
- 수치 연산자
- 비교 연산자
- 논리 연산자
- 연산의 종류에 따라 형을 구분하여 사용해야 함
용어 설명
- 연산자 우선순위
: 곱셈, 나눗셈 > 덧셈, 뺄셈
- 연산 순위 변경
: 괄호((
와 )
) 활용
- 참과 거짓
: 1은 참(True), 0은 거짓(False)
- 연산자의 중요성
: 연산자를 잘못 사용함으로 해서 프로그램 실행 중 큰 오류를 가져올 수 있으니 주의할 것
산술 연산자
수의 연산에 사용되는 연산자
- 수치 연산자
- 비교 연산자
- 논리 연산자
용어 설명
- 연산자 우선순위
: 곱셈, 나눗셈 > 덧셈, 뺄셈 - 연산 순위 변경
: 괄호((
와)
) 활용 - 참과 거짓
: 1은 참(True), 0은 거짓(False) - 연산자의 중요성
: 연산자를 잘못 사용함으로 해서 프로그램 실행 중 큰 오류를 가져올 수 있으니 주의할 것
수의 연산에 사용되는 연산자
using System;
class Calculation {
static void Main(){
// +, - 연산자는 우선순위가 같으므로 ()가 필요
Console.WriteLine("5+5는" + (5+5) + "입니다."); // 5+5는 10입니다.
Console.WriteLine("5-5는" + (5-5) + "입니다."); // 5-5는 0입니다.
Console.WriteLine("5X5는" + 5*5 + "입니다."); // 5X5는 25입니다.
Console.WriteLine("5÷5는" + 5/5 + "입니다."); // 5÷5는 1입니다.
Console.WriteLine("5÷3의 나머지는"+ 5%3 + "입니다."); // 5÷3의 나머지는 2입니다.
}
}
대입 연산자
using System;
class Plus{
static void Main() {
int a = 90;
a+= 10
Console.WriteLine("90에 10을 더하면" + a + "입니다."); // 90에 10을 더하면 100입니다.
}
}
증가 연산자와 감소 연산자
- 전치 : ++a(--a)
- 후치 : a++(a--)
- 전치와 후치는 연산을 수행하는 타이밍이 다르다. 전치는 변수의 참조보다 앞에, 후치는 변수의 참조보다 뒤에 연산이 수행된다.
int x, a=1;
x = ++a
// => 전치연산으로 a값을 x에 대입, x=2가 된다.
int x, a=1;
x = a++
// => 후치 연산으로 a값을 x에 대입, x=1이 된다.
using System;
class Position {
static void Main(){
int a = 1;
int b = 1;
Console.WriteLine($"전치라면 a는 {++a}가 됩니다."); // 전치라면 a는 2가 됩니다.
Console.WriteLine($"후치라면 b는 {b++}가 됩니다."); // 후치라면 b는 1이 됩니다.
}
}
```cs
using System;
class One{
static void Main() {
int a = 1;
Console.WriteLine($"시작은 {a}입니다."); // 시작은 1입니다.
a++;
Console.WriteLine($"1 증가시켜 {a}가 되었습니다."); // 1 증가시켜 2가 되었습니다.
a--;
Console.WriteLine($"1 감소시켜 {a}로 돌아왔습니다."); // 1 감소시켜 1로 돌아왔습니다.
}
}
비교 연산자
변수의 값이나 수치를 비교해 조건식을 만들고 그 결과에 따라 처리를 달리할 때 사용하는 연산자
식이 가지고 있는 값
using System;
class Compare{
static void Main() {
int a = 10, b = 20;
Console.WriteLine("a =" + a + "b =" +b); // a=10 b=20
Console.WriteLine("a < b ···" + (a < b)); // a<b ··· True
Console.WriteLine("a > b ···" + (a < b)); // a>b ··· False
Console.WriteLine("a == b ···" + (a == b)); // a==b ··· False
Console.WriteLine("a = b ···" + (a = b)); // a==b ··· 20
// 비교 연산자는 + 연산자보다 우선순위가 낮으므로 () 필요
}
}
논리형
bool형. true 또는 false 중 한 값을 가진 변수의 형이다.
using System;
class Compare {
static void Main(){
int a= 10, b = 20;
bool c, d, e;
c = a < b;
d = a > b;
e = a == b;
Console.WriteLine("a=" + a + "b=" +b); // a=10 b=20
Console.WriteLine("a < b ···" + c); // a<b ··· True
Console.WriteLine("a > b ···" + d); // a>b ··· False
Console.WriteLine("a == e); // a==b ··· False
조건 연산자
[?:]
는 조건식의 값에 따라 둘 중의 하나를 선택- 선택 값은 수치나 문자, 변수 등을 지정할 수 있음
bool sel;
.
.
.
int a = sel ? 0 : 1; // sel : 조건식
- 조건에 맞는 경우 (true) :
:
왼쪽 값 선택 - 조건에 맞지 않는 경우 (false) :
:
오른쪽 값 선택
using System;
class Judge{
static void Main(){
string right = "정답", wrong = "오답";
bool value;
value = true;
string answer = value ? right : wrong;
Console.WriteLine(answer); // 정답
value = false;
answer = value ? right : wrong;
Console.WriteLine(answer); // 오답
}
}
논리 연산자
복수의 조건을 조합하여 더 복잡한 조건을 나타낼 때 사용하는
&&
나||
는 단락 평가의 연산자로 높은 효율을 위해 필요 없는 평가는 생략한다. (&
나|
는 생략X)
논리형
조건식은 논리형의 값(true, false)을 가지고 있으므로 조건식으로 bool형의 변수를 이용할 수 있다.
bool x = (c==5) // x는 c=5이면 true | c!=5이면 false
bool y = (c==9) // y는 c=9이면 true | c!=9이면 false
x || y // x=true 또는 y=true이면 true
using System;
class Or{
static void Main() {
int a=3, b=4;
bool x, y;
x = (a<0);
y = (b>0);
Console.WriteLine((a == 3) && (b == 3)); // false
Console.WriteLine(x||y); // True
}
}
연산의 우선순위
- 우선순위가 같을 때 사칙연산은 왼쪽부터, 대입은 오른쪽부터 실행
형의 변환
계산 중 발생하는 형 변환
- C# 언어에서는 아래와 같이 계산이 된다.
- 정수&정수의 계산 = 정수의 답
- 실수&실수의 계산 = 실수의 답
- 정수&실수의 계산 = 실수의 답
using System;
class Type {
static void Main(){
Console.WriteLine($"3÷2={3/2}");
Console.WriteLine($"3.0÷2.0={3.0/2.0}");
Console.WriteLine($"3.0÷2={3.0/2}");
Console.WriteLine($"3÷2.0={3/2.0}");
}
}
- 정수끼리의 계산에서는 범위가 가장 큰 범위의 형으로 변환된다.
정밀도나 범위가 서로 다른 형끼리의 대입
///* 오류가 나지 않는 경우 *///
// 정수형을 실수형에 대입
int i = 8;
float f = i;
// 범위가 더 큰 형에 대입
byte i = 10;
int f = i;
///* 컴파일 오류가 나는 경우 *///
// 실수형을 정수형, decimal형에 대입
double d = 2.8;
long l = d;
// decimal형을 실수형에 대입
decimal d = 29;
float l = i;
// 범위가 더 작은 형에 대입
long d = 35;
short l = d;
// 정수형을 문자형에 대입
int d = 41;
char l = d;
// 범위가 감당할 수 없는 형에 대입
byte d = 74;
sbyte l = d;
캐스트 연산자(형 변환 연산자)
- 정수&정수의 계산 = 정수의 답
- 실수&실수의 계산 = 실수의 답
- 정수&실수의 계산 = 실수의 답
using System;
class Type {
static void Main(){
Console.WriteLine($"3÷2={3/2}");
Console.WriteLine($"3.0÷2.0={3.0/2.0}");
Console.WriteLine($"3.0÷2={3.0/2}");
Console.WriteLine($"3÷2.0={3/2.0}");
}
}
///* 오류가 나지 않는 경우 *///
// 정수형을 실수형에 대입
int i = 8;
float f = i;
// 범위가 더 큰 형에 대입
byte i = 10;
int f = i;
///* 컴파일 오류가 나는 경우 *///
// 실수형을 정수형, decimal형에 대입
double d = 2.8;
long l = d;
// decimal형을 실수형에 대입
decimal d = 29;
float l = i;
// 범위가 더 작은 형에 대입
long d = 35;
short l = d;
// 정수형을 문자형에 대입
int d = 41;
char l = d;
// 범위가 감당할 수 없는 형에 대입
byte d = 74;
sbyte l = d;
형명을 ()로 묶은 것
using System;
class Cast{
static void Main() {
// float형으로 형 변환
Console.WriteLine($"3÷2={(float) 3/2});
Console.WriteLine($"3÷2={3/(float)2);
}
}
checked, unchecked문
- 오버플로
- 변수에 선언된 데이터형의 범위보다 큰 값이 대입되어 자리가 넘치는 것
- 오버플로를 일으키면 이상한 값이 결과로 반환된다.
- checked문 : 오버플로 했을 때 예외 발생시킴 (예외 발생하므로 오버플로한 경우 수행하는 예외 처리 작성 필요)
- unchecked문 : 오버플로해도 무시하고 아무 것도 모른 채 결과를 반환 (무시하고 지나가므로 예외 처리는 작성할 필요x)
using System;
class CheckedSample{
static void Main(){
int a, b;
try{
checked {
a = int.MaxValue; // int의 최대값
b = a + 1; // 오버플로 발생
Console.WriteLine(b);
}
}
catch (OverflowException oe){ // 오버플로 시의 예외 처리
Console.WriteLine(oe.Message); // 산술계산의 결과 오버플로가 발생했습니다.
}
}
}
- 연습문제 복습 : 1, 3
Author And Source
이 문제에 관하여([C#이 보이는 그림책] 2. 연산자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@ssu_hyun/C이-보이는-그림책-2.-연산자
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 변수에 선언된 데이터형의 범위보다 큰 값이 대입되어 자리가 넘치는 것
- 오버플로를 일으키면 이상한 값이 결과로 반환된다.
using System;
class CheckedSample{
static void Main(){
int a, b;
try{
checked {
a = int.MaxValue; // int의 최대값
b = a + 1; // 오버플로 발생
Console.WriteLine(b);
}
}
catch (OverflowException oe){ // 오버플로 시의 예외 처리
Console.WriteLine(oe.Message); // 산술계산의 결과 오버플로가 발생했습니다.
}
}
}
Author And Source
이 문제에 관하여([C#이 보이는 그림책] 2. 연산자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ssu_hyun/C이-보이는-그림책-2.-연산자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)