본문 바로가기

C#

[C#]2.조건문과 자료형 bool

if문은 C에서 이미 봤기 때문에 알고 계실겁니다.


if(값){행동};

C의 문법이고요.


if(논리값){행동};

C#의 문법입니다.

예? 뭐가다른건가요?
일단 값->논리값인거 정돈 알겠네요.

그 논리값이란 놈이 대체 뭘까요?


논리값은 "너 걔랑 잤니?"라는 같은 질문에 대한 "예"나 "아니오"라는 대답을 말합니다.

C에서는 "예"나 1을 주면 됐지만,

C#에서는 "예"라는 대답만을 허용하는겁니다.


여기서 "너 걔랑 잤니?"라는 질문에 해당하는게 조건식입니다.

C에서는 질문(조건식)에 1이라고 숫자로 대답했지만

C#에서는 질문(조건식)에 "예"라고 논리값으로 대답합니다.


실행 과정을 말해보죠


C:

1.if(a==1)

2.if(1)

3.블록 실행


C#:

1.if(a==1)

2.if(true)

3.블록 실행



아마 C에서 조건식을 줄기차게 써보셨을겁니다.

if(a==1)

이렇게 된다면 a==1이 0아니면 1이 됩니다.

즉 참인지 거짓인지를 0이나 1이라는 숫자로 변합니다.

그리고 if문은 이 숫자를 확인하여 {행동}의 실행 여부를 판단합니다.


그러나, C#에서는 다릅니다.

C#에서는 a==1와 같은 조건식들은,

 참인지 거짓인지에 따라 true(예) false(아니오)라는 논리값이 됩니다.

if문은 이 논리값을 확인하여 {행동}의 실행 여부를 결정합니다.



bool

이게 뭘까요?

얘는 아까 말한 논리값의 자료형입니다.[각주:1]


선언 방법은 다른 자료형들과 동일합니다.


bool 이름 = 논리값;


즉, 저번 강의에서 나왔던 bool이라는 자료형은 논리값(true나 false)를 담는 자료형이었던겁니다.







자료형 bool은 왜 정의되었을까요?[각주:2]

설명해봅시다.


자, C에서 생각해봅시다.

if(1)return;

이 코드가 실행이 될까요?

네, 됩니다.

C에서는 논리값과 그냥값을 구분하지 않아요.


하지만 C#에서는 컴파일이 안됩니다.

if문의 조건식은 닥치고 bool을 넣어줘야 해요.

왜냐하면 if문의 조건식에는 논리값이 들어가야 하기 때문입니다.



이렇게 하면 뭐가 좋은걸까요?


1. 값과 논리값을 별개로 취급할수 있습니다.

앞 강좌에서 char과 byte를 분리한거처럼, C#에서는 값과 논리값을 분리한 거에요.

이렇게 해서 값과 논리값중 어느쪽인지 헷갈릴 일도 없어집니다.


2.값이 true나 false라서, 1바이트도 아니고 1비트면 되기 때문에 공간도 별로 안씁니다!



3. 예, 아니오인 상태를 저장해야하는 생각보다 많거든요.

게임에서, 캐릭터가 죽어있거나 살아있거나를 표현하려면 어떻게 해야할까요?

int를 선언해서 0이면 죽고 1이면 살고, 그렇게하는게 편할까요?

아닙니다.


bool char_dead =true;

조금 더 직관적이지 않습니까?

익숙해지면, int에 1,0을 넣는거보다 훨씬 보기가 간편합니다.

if(char_dead==true)game_restart();

이런식으로 하면, 캐릭터의 상태가 죽었으면 게임을 다시 시작한다는게 눈에 보이지 않습니까?


그래서 bool이 정의된겁니다.

  1. bool은 boolean의 준말입니다. 유명한 논리학자의 이름에서 따온거에요. [본문으로]
  2. bool은 논리값을 말하는 자료형입니다. 저장하는 공간의 크기를 나타내는 거라고 헷갈리지 말아주세요. [본문으로]

'C#' 카테고리의 다른 글

[C#]4. 배열  (0) 2017.01.24
[C#]3.반복문 - while과 for  (0) 2017.01.20
[C#] 1. 자료형과 변수 - char과 byte, 그 외  (2) 2016.12.09
[C#]윈도우 폼 프로그램 - 텍스트박스  (0) 2016.12.06
[C#] 윈도우 폼 프로그램 - 라벨  (0) 2016.12.06