c++에서 bool 형 값 true false 실수할 수 있는 부분

|
class Member{
public:
bool istrue;
};
int main()
{
Member * m = new Member;

printf("--------------m->istrue 형식일때-------------\n");
if(m->istrue)
{
printf("참\n");
}
else
{
printf("거짓\n");
}
printf("--------------m->istrue == true 형식일때-------------\n");
if(m->istrue == true)
{
printf("참\n");
}
else
{
printf("거짓\n");
}
printf("true = %d\n",true);
printf("false = %d\n",false);
printf("m->istrue = %d\n",m->istrue);
return 0;
}

출력결과
거짓
true = 1
false = 0
m->istrue = 205

bool 형 값은 전역변수로 선언시 0으로 초기화 되며, 
변수로 선언할때에 만약 사용하면 오류창이 뜨지만.
클래스에 있는 멤버변수로 선언을 할 시 초기화를 안해주면 쓰레기값이 들어가게된다.
첫번째 if문처럼 if(m->istrue)로 사용할시 초기화를 안해줘도 성립하지만 ( 0이아닌 모든 수는 참이다.)
두번째 if문처럼 가독성을 위해 if(m->istrue == true)를 사용하면 성립하지 않는다.(m->istrue에는 0이 아닌 쓰레기값이 들어가게된다.)
if(205 == 1) 이 아니므로 성립하지 않으므로, 루틴을 무시하기 때문에 주의해야된다.


Trackback 0 And Comment 0