Code States TIL 6일차 문제풀이중

최동혁·2020년 12월 14일
0

코딩 문제풀이 중 나온 에러로 배운 점들입니다.
1. []==0 은 true다. 이점 때문에 []가 0이나 false취급될 거라 생각했다. 하지만 if의 조건 안에 []가 들어가면 이것은 true 취급이다.
2. ''도 []과 비슷한 형태니 이것도 비슷할까 싶었지만 ''는 또 다르다. ''==0이고 if 안에서도 false처럼 작용한다.

그러므로 if나 while의 조건문 부분에 어떤 값을 바로 넣지 말고 비교하거나 함수로 체크하자.

다른 언어의 경우는?
python의 경우는

arr=[]
if(arr): print('?')
else: print('!')

를 하면 !가 나온다.

arr=''
if(arr): print('?')
else: print('!')

를 해도 !가 나온다.

C++에서는

string a="";
if(a) cout<<'?'<<endl;
else cout<<'!'<<endl;

로 컴파일하면 string을 boolean으로 변환할 수 없다고 한다.

char* a="";
if(a) cout<<'?'<<endl;
else cout<<'!'<<endl;

이면 ?가 출력된다. a 라는 pointer의 값은 0이 아닐테니까.
empty array는? C++에서 empty array를 만들 수 있나? empty array를 만든다해도 만들때 사용할 array의 길이를 지정해주니 또 그 메모리의 pointer 값을 가질거니까 true일 것이다.
vector는 bool로 변환할 수 없다고 나온다.
linked list도 pointer가 if 안에 들어가면 true로 칠 거고 pointer가 아니라 linked list 자체를 넣어버리면 변환할 수 없다고 나올 것 같다.

0개의 댓글