Notice
Recent Posts
05-19 02:03
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
관리 메뉴

프로그래밍 잡화점

bool과 int의 관계 (In C) 본문

C, C++ 분석 보고서

bool과 int의 관계 (In C)

Luana7 2022. 3. 12. 09:00

0은 false고 나머지를 true로 받는 이유는 C 컴파일러 마음대로 이기 때문이다.


역어셈을 해보면 int -> bool하는 과정은 그저 cmp 하나로 작성되어 있음을 알 수 있다
cmp 변수 0x0 (cmp는 compare)

 

실제로 다음 코드를 역어셈 해보면 재밌는 사실을 알 수 있다

int main() {
  int n = 5;
  n = !n;

  return 0;
}

 

Disassembled Code (partial)

설명

1줄 : 변수에 5를 할당한다
2줄 : 변수랑 0을 비교해서 Zero Flag를 설정한다
3줄 : Zero Flag에 따라서 0또는 1을 al 레지스터에 넣는다
4줄 : al 레지스터의 값을 eax 레지스터에 넣는다
5줄 : n에 eax의 값. 즉 Zero Flag에 따라 생성된 0 또는 1의 값이 들어간다

 

따라서 n이 0이 아니기 때문에 Zero flag에 의해서

sete는 0을 반환한다

 

이후 그 0이 n에 들어가게 되는 것이다

 

이렇게 n = 0인 상황에서는 cmp가 Zero를 true 설정하기 때문에

값이 달라진다.

'C, C++ 분석 보고서' 카테고리의 다른 글

struct 반환에 대한 고찰  (2) 2023.04.06
함수의 반환에 대한 고찰  (0) 2022.12.27
main의 반환형에 관한 고찰 (In C)  (2) 2022.05.04
if에 관한 고찰 (In C)  (0) 2022.03.13
for에 관한 작은 고찰 (In C)  (0) 2022.03.11
Comments