연산자 우선 순위(비트 '&'가 '=='보다 낮음)
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
'programing' 카테고리의 다른 글
바이트를 이진 문자열 표현으로 변환하는 방법 (0) | 2022.10.14 |
---|---|
mysql에서 임시 테이블을 만드는 동안 문제가 발생했습니다. (0) | 2022.10.14 |
wamp server 컨피규레이션파일에 행 561 의 구문 에러가 포함되어 있습니다.파라미터 서비스는 알 수 없는 서비스를 지정합니다. (0) | 2022.10.14 |
표시되는 모든 마커를 포함하도록 지도 확대/축소 설정 (0) | 2022.10.14 |
메모리 문제로 인해 MariaDB가 하루에 한 번 크래시됨 - 메모리를 더 할당해도 수정되지 않음 (0) | 2022.10.14 |