본문 바로가기

기타 지식들12

조건식 순서의 중요성 (단락 평가) while (target->key != key && target != NULL) {} 다음 코드는 심각한 오류를 불러올 수 있다왜 그럴까? 한 번 생각해 보자..........이유는 target이 NULL값인 상황에 있다저렇게 target != NULL 조건을 뒤로 보내게 되면 조건식을 따졌을 때 target이 NULL이여도 그대로 target->key != key 조건식을 검사하게 된다 하지만 포인터가 NULL일 때 그 포인터가 가리키는 값을 접근하려고 하면 segmentation fault(프로그램이 허용되지 않은 메모리 영역에 접근하려고 할 때 발생하는 오류)가 일어나게 된다 따라서 조건식을 아래와 같이 target != NULL 먼저 오게 해야 한다while (target != NULL && ta.. 2024. 7. 19.
오버플로우 방지 코드 작성법 4가지 int calculateMid1(int left, int right) { return (left + right) / 2;} 단순히 심플한 수식이지만 오버플로우가 발생할 수 있는 위험한 코드이다오늘은 오버플로우를 방지할 수 있는 코드 작성법 4가지에 대해 설명하려 한다    1. 가장 유명한 방식int calculateMid2(int left, int right) { return left + (right - left) / 2;} 오버플로우 방지의 교과서 같은 방식이다   2. 비트 연산 방식int calculateMid3(int left, int right) { return left + ((right - left) >> 1);} 비트를 오른쪽으로 한 칸 이동시키는 연산으로, 이는 2로 나누.. 2024. 7. 5.
foo bar baz 의미 및 유래 foo, bar, baz, fie, foe, fee, ...프로그래밍 언어 공부를 하다 보면 foo, bar, baz 등의 변수명 등을 본 적이 있을 것이다 (특히 스택 오버플로우에서 많이 보인다)우리나라로 치면 변수명을 갑, 을, 병, 정 느낌으로 선언하는 것이다 그렇다면 이 foo, bar, baz의 유래는 어떻게 될까?이 foo, bar, baz의 유래는 아무도 모른다그치만 유래에 대한 추측들로 크게 3가지가 있다   1. 2차세계대전 당시 미 육군에서 쓰이던 여러 줄임말 중, 개판이 됐다는 뜻인 FUBAR(Fucked Up Beyond All Recognition / Repair)에서 Foo와 Bar가 유래했다는 설  2. 1930 ~ 1952년 사이에 만화가 Bill Holman 이 그린 Smo.. 2024. 3. 26.