형님들 null check 할때 if (Ptr !=nullptr )아니고
그냥
if (Ptr)
{
YourMom();
}
또는
(!Ptr)
{
}
이런식으로 처리도 가능하잖아요?
Ptr != nullptr 은 명시적으로 왜 저렇게 작동하는지 이유는 알겠는데
그냥 if (Ptr) 을 입력했을때 저게 null 이면 컴파일러는 어떻게 알아보고 거르는 건지 너무 궁금합니다.
nullptr 은 0 이다. 라는걸 어느 단계에서 구분하나요??
형님들 null check 할때 if (Ptr !=nullptr )아니고
그냥
if (Ptr)
{
YourMom();
}
또는
(!Ptr)
{
}
이런식으로 처리도 가능하잖아요?
Ptr != nullptr 은 명시적으로 왜 저렇게 작동하는지 이유는 알겠는데
그냥 if (Ptr) 을 입력했을때 저게 null 이면 컴파일러는 어떻게 알아보고 거르는 건지 너무 궁금합니다.
nullptr 은 0 이다. 라는걸 어느 단계에서 구분하나요??
컴파일러가 거르는게 아니라 컴파일러가 저런 문법을 허용한다고 하는게 더 맞는 표현같아. 컴파일러가 저런 표현식이 if 조건에 들어가면 적절하게 처리하는거겠지
뭔언어를 말하는지는 몰라도 컴파일러에 허용시킨게 아니라 스탠다드에서 정의방법을 이정돈 읽을 수 있게 만들어 논거
스탠다드가 뭐건간에 어쨌든 컴파일러가 저런 문법도 처리 가능하게 구현됐다는 의미.
그야 안에 조건식이 들어가든 값이 들어가든 0인지 아닌지만 판단하기 때문 아님?
NULL이든 nullptr이든 진짜 0입니다...
감사합니다. 성님들 그럼 NULL 이든 nullptr 이든 다 0이라고 판단하는건 처음 유동성님이 말씀하신대로 문법적으로 NULL, nullptr 은 0이라고 컴파일러측 문법처리에 있다고 보면 될까요???
어디다가 Define 을 해놨는지 그게 넘모 궁금합니다.
stddef.h에 #define NULL (void *)0 라고 돼있을껄요
그리고 if문에 0 아닌 걸 넣으면 true로 인식하는 건 logical true (0/false가 아니면 전부 true) 이기만 하면 되기 때문인 걸로 알고있음 그리고 stdbool.h에 enum bool { false, true }로 돼있음
여기 묻지 말고 C++ 표준이든 컴파일러 스펙이든 보는 게 빠를 듯 그냥 0으로 캐스팅하는 거일 수도 있고.. 방법은 여러가지 같은데
어셈블리 좀만 공부하셈 어차피 설명해도 더 궁금할거임. The logic operator that indicates the evaluation of the if-statement at the higher level is typically to output zero or one, where the input is accordingl
Ingly exactly zero(0x00...00) or non-zero value
여기서 또 내려가면 비트레벨로 설명되고 ㅋㅋ
여기서 또 내려가 달라고 궁금하다 하면 디지털 논리로 내려가고 ㅋㅋ
여기서 또또 궁금해요 하면 논리 수학으로 가고 ㅋㅋㅋ
잠깐 방향을 틀어서 물리적으로 궁금해요 하면 전자 회로로 내려가고 ㅋㅋㅋ
더내려가 줘용 하면 전자기학가서 맥스웰 주르륵 때려주고 ㅋㅋㅋ
어디까지 가니 ㅋㅋㅋ
(회로 전자기학 중간에 트랜지스터, 반도체 때려줘야 합니다 )
걍 언어 스펙이 그런거임
형님들 밤새고 와보니 댓글이 많이 달려있네요 감사합니당 어셈블리 더 공부하고 언어스펙좀 더 알아보겠음다 감사합니당