산술 연산자

 

 

 

 

구분 

연산자 

 

예 설명 

이항 

+, -, *, /, % 

k=j % 3; 

3으로 나눈 나머지 

증감 

++ 

j++; 

1증가 

-- 

j--; 

1감소 

할당연산자 

+=, -=, *=, /=, %= 

j+=3;

j%=3; 

j=j+3과 동일

j=j%3과 동일

 

 

 

 

 

연산자 sizeof

 

 

 

 

Ø주어진 데이터형식의 크기를 byte 단위로 구해준다.
Ø제약사항
lsizeof 연산이 가능한 형식: 값 형식

  : int, float, enum, struct

lunsafe 연산이다. unsafe가 명시된 코드블럭이나 메소드에서만 사용할 수 있다. (또는 컴파일시 /unsafe 옵션 사용)

 

 

 

 

 

기본 연산자

 

 

 

 

연산자

이름

의미

(x)

괄호

연산의 우선순위 명시

x.y

클래스의 메소드나 속성

f()

메소드괄호

메소드의 인자를 괄호안에 넣는다

a[x]

대괄호

배열이나 인덱서의 인덱스

checked

 

형변환시 오버플로우를 체크

unchecked

 

형변환시 오버플로우 체크 않음

typeof()

 

객체에 대한 정보를 얻음(리플렉션참고)

sizeof()

 

객체의 크기를 얻음

 

 

 

 

 

C#의 연산자 목록

 

 

 

 

 

 구분

 연산자

기본 연산자 

(x), ., f(x), a[x], x++, x--,

new, typeof, sizeof, checked, unchecked 

단항 연산자 

+, -, !, ~, ++x, --x 

산술 연산자 

+, -, *, /, % 

쉬프트 연산자 

<<, >> 

비교 연산자

<, >, <=, >=, is 

비트 연산자 

&, ^, | 

논리 연산자 

&&, || 

조건 연산자 

?: 

할당 연산자 

=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= 

 

 

 

 

 

상수

 

 

 

 

Ø항상 고정된 데이터형식과 값을 가지는 것
l) 원주율 PI 는 프로그램을 통틀어 고정된다.

 

Ø변수선언과 거의 동일하고, 앞에 const를 붙여주는 것만으로 상수가 된다. 상수는 선언시 값을 지정해 주어야 한다.
l) const double PI=3.14159;

 

Ø선언 시 할당하지 않으면 에러발생

 

Ø선언 후 다른 값을 할당해도 에러 발생

 

Ø상수는 주로 대문자를 사용한다. 그리고 변수명과 같은 이름을 사용할 수 없다.

 

 

 

 

checked, unchecked 사용

 

 

 

 

Ø모든 형 변환에 checked/unchecked를 붙이는 것은 낭비적인 일이기 때문에, 컴파일러 옵션에서 정해줄 수 있다.

  csc /unchecked SourceCode.cs

  csc /checked SourceCode.cs

 

Ø소스코드 내부에서 checked, unchecked를 명시해 놓은 이외의 형 변환에 디폴트로 적용되게 된다.

 

Ø객체의 명시적 형 변환은 연산자 오버로딩을 통해 프로그래머가 정의할 수 있다.

 

 

 

 

 

 

설명) checked 형변환

 

 

 

 

 

(1) 이 바로 checked 형 변환이다. 40000short에 들어가기엔 너무 큰 수이기 때문에 overflow 예외가 발생한다.
(2) overflow 예외를 catch하는 부분인데, exception handling 에서 자세히 다룰 예정이며, 단지 checked 형 변환이 예외를 발생시킨다는 것만 알아두자.
(3)의 결과로부터, 예외가 발생하였음을 확인 할 수 있다.

 

 

 

 

 

예제) checked 형 변환

 

 

 

 

using System;

class TypeCast03

{

  public static void Main()

  {

    int   value3 = 50000;

    try{

  short value4 = checked ((short) value3);//ß(1)

    } catch (Exception e){                    //ß(2)

  Console.WriteLine(“예외 : {0}",e.StackTrace);//ß(3)

    } 

  }

}

 

 

 

 

+ Recent posts