>백엔드 개발 >C++ >이름 조회, 쉼표 연산자 동작 또는 표현식 평가를 조작하기 위해 C에서 추가 괄호를 언제 어떻게 사용합니까?

이름 조회, 쉼표 연산자 동작 또는 표현식 평가를 조작하기 위해 C에서 추가 괄호를 언제 어떻게 사용합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-24 03:37:30499검색

When and How to Use Extra Parentheses in C   to Manipulate Name Lookup, Comma Operator Behavior, or Expression Evaluation?

C의 추가 괄호 : 연산자 우선 순위를 넘어서

추가 괄호는 일반적으로 C 프로그램의 의미를 바꾸지 않지만, 특정 상황에서는 기본 연산자 우선순위를 무시하는 것 이상의 효과:

1. 인수 종속 이름 조회 방지

(fn)(arg)와 같은 함수 호출 주위의 괄호는 인수 종속 이름 조회(ADL)를 방지합니다. 괄호가 없으면 fn(arg)는 가능한 일치 함수를 둘러싸는 네임스페이스에서 검색합니다.

2. 목록 컨텍스트에서 쉼표 연산자 활성화

함수 인수 또는 초기화 목록과 같은 목록 컨텍스트에서 a, (b, c), d를 사용하면 표준 a와 달리 쉼표 연산자를 (b, c)에 별도로 적용할 수 있습니다. b, c, d 표기

3. 성가신 구문 분석의 모호성 해결

추가 괄호는 선언형 구문이 함수 또는 표현식 문과 충돌하는 코드를 명확하게 할 수 있습니다. 예를 들어, S w(int(a)); 및 S y((int)a);, 괄호는 함수 선언이 아닌 객체 선언임을 분명히 합니다.

4. decltype 표현식의 참조성 추론

decltype(e)은 피연산자가 lvalue 참조인지 rvalue 참조인지 추론합니다. decltype((e))처럼 괄호를 추가하면 피연산자가 rvalue 참조로 처리됩니다.

5. 전처리기 매크로 오류 방지

연산자 우선순위 문제를 방지하고 매크로 인수를 쉼표로 보호하며 헤더의 매크로 확장을 방지하기 위해 매크로 정의 내에서 괄호를 사용할 수 있습니다. 예를 들어 #define TIMES(A, B) (A) * (B); TIMES(1 2, 2 1)이 9로 평가되는지 확인합니다.

위 내용은 이름 조회, 쉼표 연산자 동작 또는 표현식 평가를 조작하기 위해 C에서 추가 괄호를 언제 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.