Alternative operators and tokens
C 소스 코드는
ISO 646:1983
불변 문자 집합을 포함하는 모든 8비트 문자 집합으로 작성될 수 있으며, 비ASCII 문자 집합도 가능합니다. 그러나 여러 C 연산자와 구두점에는 ISO 646 코드셋 외부의 문자가 필요합니다:
{, }, [, ], #, \, ^, |, ~
. 이러한 기호 중 일부 또는 전체가 존재하지 않는 문자 인코딩(예: 독일의
DIN 66003
)을 사용할 수 있도록 하기 위해 두 가지 방법이 있습니다: 이러한 문자를 사용하는 연산자의 대체 표기법 또는 단일 비ISO 646 문자로 해석되는 두 개 또는 세 개의 ISO 646 호환 문자 조합.
목차 |
연산자 매크로 (C95)
ISO646 문자가 아닌 문자를 사용하는 연산자에 대한 대체 철자가 있으며, 이는 <iso646.h> 에 매크로로 정의되어 있습니다:
|
헤더에 정의됨
<iso646.h>
|
|
| 기본형 | 대체형 |
&&
|
and
(연산자 매크로) |
&=
|
and_eq
(연산자 매크로) |
&
|
bitand
(연산자 매크로) |
|
|
bitor
(연산자 매크로) |
~
|
compl
(연산자 매크로) |
!
|
not
(연산자 매크로) |
!=
|
not_eq
(연산자 매크로) |
||
|
or
(연산자 매크로) |
|=
|
or_eq
(연산자 매크로) |
^
|
xor
(연산자 매크로) |
^=
|
xor_eq
(연산자 매크로) |
문자 & 와 ! 는 ISO-646에서 불변이지만, 더 제한적인 역사적 문자 집합을 수용하기 위해 이러한 문자를 사용하는 연산자들에 대한 대안이 여전히 제공됩니다.
동등 연산자 == 에 대한 대체 표기법(예: eq )은 존재하지 않습니다. 왜냐하면 문자 = 가 지원되는 모든 문자 집합에 존재했기 때문입니다.
대체 토큰 (C95)
다음 대체 토큰들은 코어 언어의 일부이며, 언어의 모든 측면에서 각 대체 토큰은 철자(스펠링)를 제외하고 기본 토큰과 완전히 동일하게 동작합니다 ( 문자열화 연산자 는 철자를 가시적으로 만들 수 있습니다). 두 글자로 된 대체 토큰들은 때때로 "다이그래프"라고 불리며 % : % : 도 네 글자임에도 불구하고 다이그래프로 간주됩니다).
| 기본 | 대체 |
|---|---|
{
|
<%
|
}
|
%>
|
[
|
<:
|
]
|
:>
|
#
|
%:
|
##
|
%:%:
|
트라이그래프 (C23에서 제거됨)
다음 세 문자 그룹(삼중 문자)은 주석과 문자열 리터럴이 인식되기 전에 파싱됩니다 , 그리고 각 삼중 문자는 해당하는 기본 문자로 대체됩니다:
| 기본 문자 | 삼중 문자 |
|---|---|
{
|
??<
|
}
|
??>
|
[
|
??(
|
]
|
??)
|
#
|
??=
|
\
|
??/
|
^
|
??'
|
|
|
??!
|
~
|
??-
|
삼중문자가 초기에 처리되기 때문에, // Will the next line be executed?????/ 와 같은 주석은 실제로 다음 줄을 주석 처리하게 되며, "What's going on??!" 와 같은 문자열 리터럴은 "What's going on|" 로 파싱됩니다.
예제
<iso646.h> 헤더의 대체 연산자 표기법과 더불어 디그래프 및 트라이그래프 사용법을 보여줍니다. 명령줄 인수에 공백이 포함된 경우 따옴표로 감싸야 합니다, 예를 들어, "Third World!" .
가능한 출력:
Hello ./a.out
참고 항목
|
C++ 문서
에 대한
대체 연산자 표현
|