이 질문은 C 및 C ++ 코스 자료를 업데이트하고 있으며 과거 학생들이 그것에 대해 물어 보았 기 때문에이 질문을하고 있습니다.
ISO / IEC 9899 : 2017 섹션 6.5 표현식 ¶1 (C ++ 표준에서도 유사) :
" 표현식 은 값의 계산을 지정하거나 객체 또는 함수를 지정하거나 부작용을 생성하거나 이들의 조합을 수행하는 연산자 및 피연산자의 시퀀스입니다.…"
표준 작성자는 분명히 단어를 신중하게 선택하기 때문에 "연산자와 피연산자의 시퀀스"라는 문구를 사용하는 것이 잠재적으로 오해의 소지가있는 것 같습니다. 표현식으로 간주 되려면 둘 이상의 연산자와 하나 이상의 피연산자가 있어야 함을 나타내는 것 같습니다. 따라서 123과 같은 리터럴이나 XYZ와 같은 변수는 연산자가 없기 때문에 표현식으로 간주되지 않으며 연산자가 없으면 피연산자로 간주 될 수 없습니다.
그러나 123과 XYZ가 실제로 표현식 인 경우 "연산자 및 피연산자의 시퀀스"라는 구문을 "하나 이상의 문자 시퀀스"또는 이와 유사한 것으로 대체하는 것이 더 정확하지 않을까요?
표준에 명시된 내용에 대해 내가 잘못 해석하고있는 부분을 알려주십시오.
예, C 표준에서 "표현"의 정의는 불완전하지만 실제 문제를 일으키는 방식은 아닙니다 (나처럼 까다로운 사람 제외).
인용 한 텍스트의 "표현식"이라는 단어는 이탤릭체로되어 있으며 이는 용어의 공식적인 정의임을 의미합니다. 123
예를 들어 표준의 다른 부분 에서는 표현식이라는 것이 분명합니다. 십진수 상수 , 정수 상수 , 상수 , 1 차 표현식 `, 접미사 표현식 , (여러 단계 건너 뛰기)는 표현식 입니다.
"연산자 및 피연산자의 시퀀스" 가 아닙니다 . 연산자 123
가 없습니다. 이는 피연산자가 아님 을 의미합니다 ( 표준의 다른 곳에서 연산자 및 피연산자 의 정의를 참조하여 설명 할 수 있음 ).
실제로이 불완전한 정의로 인해 실제로 어려움을 겪고있는 컴파일러 구현 자나 C 프로그래머 중 누구라도 들어 본 적이 없습니다. 컴파일러 구현자는 언어 문법을 참조합니다. C 프로그래머는 표준을 읽기 전에 "표현식"이 무엇인지 꽤 잘 알고있을 것입니다.
표준의 새 버전에서 업데이트 된 표현 의 정의를보고 싶습니다 . 영어 설명을 시도하는 대신 문법을 참조하는 정의는 IMHO가 개선 될 것입니다.
그러나 업데이트되지 않으면 우리 모두 문제없이 표현식을 계속 사용할 것입니다.
C ++의 경우 Nicol Bolas의 대답 은 C ++ 표준이 C 표준처럼 "표현식"에 대한 공식적인 정의가 없다는 것을 올바르게 지적합니다. 절 8의 맨 위에 유사한 표현이 있습니다. "표현식은 계산을 지정하는 연산자 및 피연산자의 시퀀스입니다." -그러나 "표현"이라는 단어는 이탤릭체가 아니고 그 문장은 "노트"의 일부이므로 비표준입니다. C ++에서 표준은 식을 구문 적으로 정의합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다