본문 바로가기
컴퓨터/C#

[C#] 연산자

by 아기상어  2020. 5. 26.

 

산술연산자

+, -, *, /, % 가 있으며, 왼쪽값->오른쪽값 순으로 진행되고
산술연산자가  한문장에 있을때 * / % 가 먼저 연산되고 +,-가 나중에 연산된다.

            int iNum = a * b - c / d + e % f;// a*b, c/d, e%f 가 실행되고 난 다음 - + 순

대입연산자

= 은 우선순위가 제일 낮은쪽에 속하고, 왼쪽값 <- 오른쪽값 순으로 진행된다.

            int iNum = 100;

논리연산자

 

&& - AND 연산자, 왼쪽 값과 오른쪽 값이 true 일때만 true를 반환, 나머지는 false

||    - OR 연산자, 왼쪽 값과 오른쪽 값중 하나가 true일 때 true를 반환, 나머지는 false

!     - NOT 연산자, 오른쪽에 오는 값이 true이면 false를 반환하고 false이면 true를 반환

            int iYear;
            Console.WriteLine("년도를 입력하세요");
            iYear = int.Parse(Console.ReadLine());

            if ( ((0 == iYear%4) && (0 != iYear%100)) || (0==(iYear%400)))
            {
                Console.WriteLine("{0}는 윤년입니다.", iYear);
            }
            else
            {
                Console.WriteLine("{0}는 평년입니다.", iYear);
            }

증가연산자와 감소연산자

            int iNum = 100;
            Console.WriteLine(iNum);    // 100
            ++iNum;
            Console.WriteLine(iNum);    // 101
            iNum = iNum + 1;
            Console.WriteLine(iNum);    // 102

            int iNum2;
            iNum2 = ++iNum;
            // iNum = iNum+1;
            // iNum2 = iNum;    분리 하는게 알아보기 더편함.

            Console.WriteLine("iNum, iNum2 = {0},{1}",iNum,iNum2);
            // 103 103 iNum에 +1을 하고 대입함

            int iNum3;
            iNum3 = iNum++;
            //iNum3 = iNum;
            //iNum = iNum+1;

            Console.WriteLine("iNum, iNum2 = {0},{1}", iNum, iNum3);
            // 104 103 iNum을 대입하고 +1을 함 , 왼쪽에 변수가 있을떄 차이가 남


++ , —, 각각 1을 증가시키거나 1을 감소시킨다.

 

ㅁ++; 는 L_value에 R_value를 대입시킨후 R_value에 +1을 한다. 후위 증감 연산자

++ㅁ; 는 R_value에 +1을 한 다음 L_value에 R_value를 대입한다. 전위 증감 연산자
전위 증감 연산자 - 변수의 값을 변경한 후 구문 실행
후위 증감 연산자 - 해당 구문 실행후 변수의 값 변경

 


삼항연산자

(bool)? true : false 
주로 최댓값이나 최솟값을 구할때 쓰임

            int iNum1;
            int iNum2;
            int iMax;
            Console.WriteLine("첫번째 정수를 입력하세요");
            iNum1 = int.Parse(Console.ReadLine());
            Console.WriteLine("두번째 정수를 입력하세요");
            iNum2 = int.Parse(Console.ReadLine());
            
            iMax = (iNum1 > iNum2) ? iNum1 : iNum2;  // 첫번째와 두번째 수 중 큰값을 max에 저장
            //iNum1이 큰경우 iMax = iNum1
            //iNum2가 큰경우 iMan = iNum2
            Console.WriteLine("제일 큰 값은 {0}입니다", iMax);

 


비트연산자

<< , >>, &, |, ^

<<와 >>는 비트단위로 몇칸만큼 이동시키라는 연산자

            byte bNum = 100;
            Console.WriteLine(bNum);        // 100, 0110 0100
            bNum = (byte)(bNum <<2);        // 캐스팅 해야됨
            Console.WriteLine(bNum);        // 144, 1001 0000

 

&는 비트단위로 비교해서 각 비트가 true일때 true를 반환한다, 비트가 아닌 다른경우에 쓰면
&&는 왼쪽값이 false일때 오른쪽 값 연산을 안하는 반면 &는 왼쪽값이 false여도 오른쪽값 연산을 수행한다.

 

|는 비트버전 OR 연산자이고

^는 !=와 같다고 보면된다. 같지 않을때 true이고 같으면 false이다.

            byte bNum1 = 0xAD;   // 1010 1101
            byte bNum2 = 0x69;   // 0110 1001
            bNum1 = (byte)(bNum1 & bNum2); // 0010 1001 = 41(10진수)
            Console.WriteLine(bNum1);   //  41

 

 


 

상등연산자

==, !=

== 는 L_Value와 R_Value가 같을때 true를 반환한다. 같지않으면 false

!= 는  L_Value와 R_Value 같지 않을때 true를 반환한다. 같으면 false, XOR