programing

연산자 우선 순위(비트 '&'가 '=='보다 낮음)

coolbiz 2022. 10. 14. 22:02
반응형

연산자 우선 순위(비트 '&'가 '=='보다 낮음)

C 프로그래밍 언어에서 비트 연산자(& 및 |)가 등호 연산자(==)보다 낮은 우선 순위를 갖는 이유는 무엇입니까?그건 말이 안 돼요.

Brian Kernighan이나 Dennis Ritchie에게 물어보세요.
포럼 : http://bytes.com/topic/c/answers/167377-operator-precedence

& & | 연산자와 | 연산자는 나중에 단락 동작으로 추가되었습니다.Dennis Ritchie는 논리 연산자가 추가되었을 때 비트 연산자의 우선순위가 변경되었어야 했다고 회고적으로 인정한다.하지만 그 시점에 수백 킬로바이트의 C 소스 코드가 존재하고 세 대의 컴퓨터가 설치되어 있기 때문에 Dennis는 C 언어의 변화가 너무 클 것이라고 생각했습니다.

그래서, 그게 이유일 수도 있겠네요?(관계형 비교와 달리) 비트 단위의 프리펜던스 층이 여러 개 있기 때문에, 그 이후부터 존재해 온 것은 불량품이라고 생각합니다.영원히...절대 고쳐지지 않을 뿐이죠

돌이켜보면 데니스 리치에게도 말이 되지 않는다.

http://www.lysator.liu.se/c/dmr-on-or.html

& 및 |는 | 및 & 뒤에 언어에 추가되었으며 호환성을 위해 우선순위는 유지되었습니다.

왜 K&R이 우선 순위를 선택했는지에 대해 나는 신뢰할 수 있는 답을 가지고 있지 않다.이치에 맞는 한 가지 예는 다음과 같습니다.

if (x == 1 & y == 0) {
    /* ... */
}

이것은 비트 단위 AND 연산자이므로 다음과 같이 논쇼트 서킷 평가 모드를 사용합니다.

if (x == 1 | y == 0) {
    /* ... */
}

단락되지 않은 OR 연산자를 사용합니다.이래서 우선 순위 그룹을 선택한 것일지도 모르지만, 돌이켜보면 좋은 생각이 아닌 것 같습니다.

언급URL : https://stackoverflow.com/questions/4685072/operator-precedence-bitwise-lower-than

반응형