-
C# 자료형, 조건문, 연산자 (교육 6일차)C# 2020. 5. 25. 17:59
자료형
저번 글에서 다뤘던 명시적 변환 중에서, 실수형을 정수형으로 캐스팅했을 때, 실수형의 소수점 밑의 자리가 버림으로 처리된다. 밑의 예제는 실수형을 정수형으로 바꿀 때, 반올림이 되게 만들어 준다
ex)
3.6 + 0.5 = 4.1 -> 정수형 변환 = 4
3.4 + 0.5 = 3.9 -> 정수형 변환 = 3
중단점
Visual Studio에서는 중단점 기능을 제공한다. 중단점을 설정하고 싶은 줄의 왼쪽 빨간원에 클릭을 하거나, F9을 누르면 중단점이 설정되는데 디버깅하지 않고 컴파일 하기 말고, F5를 눌러서 컴파일을 하면 한줄 씩 컴파일이 되는 것을 알 수 있다. 다음 줄을 실행하고 싶을 때는 F11을 눌러서 차례로 실행한다. 소스 코드 내에서 컴파일러가 찾아내지 못한 오류나 구문 상 오류를 쉽게 찾는데 이용가능하다.
컴파일 시작 노란 박스는 다음에 실행 될 예정인 코드 iNum = 100이 출력이 된 이후 아직 ++iNum이 실행되지 않았다. 101에서 1을 더한 102가 iNum에 저장되었지만 아직 출력은 되지 않았다. 조건문( if문 )
프로그램 상에서 분기를 설정하거나 조건을 걸어서 조건에 해당할 경우, 원하는 코드를 실행하거나 혹은 실행하지 않도록 하는 역할을 한다. 조건을 판단하는 기준은 true 혹은 false이다. 아래 예제에서는 '참입니다.'라고 먼저 출력되는 이유는 기본값 즉 default값이 1로 설정되있기 때문이다. 그 밑의 조건문에서는 입력받은 정수가 100이상일 경우 참이므로 아래 내용이 출력된다.
위의 예제는 3과 10의 공배수를 구하는 조건문이다. 10으로 나눠져야 그 다음 조건 3으로 나눠지는지 확인 한 다음 출력한다. 논리 연산자를 이용해서 위 소스코드의 조건문을 간략화 한 것이다. &&(And)연산을 통해 양쪽의 10으로 나누면 0, 3으로 나누면 0, 두 조건이 둘다 참이어야 아래내용이 출력된다. %연산 즉 modulo 연산은 나머지를 찾아주는 연산자이다. 2로 나누어 떨어지면 짝수 그 외의 경우 홀수로 나타낸다. 위 예제에서 if문만 썼을 때의 문제점은 만약 99점이라고 입력을 했다면, B의 조건 C의 조건이 모두 해당하므로 else를 제외한 A,B,C,D 모두 출력이 될 것이다. 하지만 else if 를 사용한다면, 첫번째 조건에 만족하면 아래의 조건은 쳐다보지도 않는다. 또한 모든 조건을 검사할 필요가 없으니 컴파일 시간 또한 줄어들 것이다.
윤년의 조건
- 서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1988년, 1992년, 1996년, 2004년, 2008년, 2012년 ...)
- 서력 기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1900년, 2100년, 2200년, 2300년, 2500년...)
- 서력 기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (2000년, 2400년...)여러가지 방법이 있겠지만 위의 방법은 윤년의 조건 중 세가지 모두 다 4로 나누어떨어지므로 일단 if(iNum%4==0)으로 윤년을 걸고 그외의 부분은 평년을 건다. 그리고 iNum이 4로 나누어 떨어지면서 100으로도 나누어떨어지면 평년, 그 외 400으로 나누어 떨어지면 윤년으로 코딩했다. 밑의 예제는 AND와 OR를 사용한 조금 더 간단한 방법이다.
조건문(Switch)
switch조건문은 각 케이스에 대응하는 조건문이다. if문 과는 다르게 범위를 설정할 수 없고 기본적으로 구문은 아래와 같다. 각 케이스별로 break를 적어줘야 한다.
연산자 (단항 연산자)
i라는 변수가 있을 때 i에 1을 더하는 용도로 ++i와 i++을 사용한다. 두가지 모두 변수에 1을 더하는 용도이지만 단독으로 쓸 때는 차이가 없지만, 대입연산자와 같이 쓸 경우 차이가 있다. ++i의 경우에는 i에 1을 더한 다음 대입하지만, i++의 경우에는 대입을 한 다음에 1을 더한다.
연산자(산술 연산자)
위에서 나머지 연산자에 대해 적었었는데, 실수형일 경우 몫이 소수점까지 나오므로 나머지가 없다
3항 연산자
위의 조건문과 일치하는데, (조건문)? a : b 인데 조건문이 참이라면 a 거짓이라면 b가 선택된다.
비트 연산자
연산자 의미 예시 A= 0101 1100 B= 1100 1010 & 비트단위 AND A & B = 0100 1000 | 비트단위 OR A | B =1101 1110 ^ 비트단위 NOR A ^ B = 1001 0110 ~ 비트단위 NOT A ~ B = 1010 0011 << 왼쪽으로 1비트 이동 A<<2 = 0111 0000 >> 오른쪽으로 1비트 이동 B>>2 = 0011 0010 <<연산자는 왼쪽으로 밀면 2의 승수만큼 곱
>>연산자는 오른쪽으로 밀면 2의 승수만큼 나누기
16진수로 프로그래밍 하기 A=0xAD 0x넣고 뒤에 16진수
위의 코드에서 bNum을 왼쪽으로 3칸 shifting하면
0 0 0 1 0 0 0 0 ->
1 0 0 0 0 0 0 0 128이 정상적으로 출력
'C#' 카테고리의 다른 글
C# 객체지향, 구조체, 배열(교육8일차) (0) 2020.05.27 C# 반복문 (교육 7일차) (0) 2020.05.26 C# 자료형, 16진수, 용어(교육 5일차) (0) 2020.05.23 C# 자료형 (교육 4일차) (0) 2020.05.21 C# 개발환경 구축 (교육 3일차) (0) 2020.05.20