CAFE

C 프로그래밍

문자 상수(character constant)와 문자열 상수(string constant)

작성자별은빛나고|작성시간12.06.26|조회수684 목록 댓글 0

 

 

②,③번은 맞는 말이니 답이 아닙니다.

④는 문자열 상수에 대한 표현이지 문자 상수에 대한 표현이 아니니 답이 됩니다(문자형(character type) 상수문자 상수(character constant)를 같은 것이며 문자열 상수(string constant)와 상대적 개념이라는 전제로),

문제는 ①이 왜 정답처리가 되었느냐인데 <임인건, 터보C정복, 도서출판 가남사, 1990년>에는 다음과 같이 적고 있습니다.

 

QR.2.3 문자 상수(character constant)

 

 [표 QR.2.3-1] 문자 상수의 분류에 따른 데이터형

 

. 문자 상수는 데이터형이 모두 int형이므로 -32768~32767의 허용범위를 가진다. 32768 이상의 값을 가지는 문자 상수는 없다(단, 캐스트 연산자를 사용하면 가능하다). 예를 들어, 2문자 상수 '\xff\xde' 음의 값을 가지며 int형으로 취급된다. (159쪽)

 

더블클릭을 하시면 이미지를 수정할 수 있습니다

결론을 말하자면 ①도 정답이 된 이유는 2문자 상수 '\xff\xde'도 존재하기 때문이라고 생각합니다('\xff\xde'가 작은 따옴표로 둘러싸인 점을 주목하시기 바랍니다).

 

 

 

<참고>

            QR.2.5 문자열 상수(string constant)

 

ㆍ터보C의 문법 체계에서는 문자열 상수를 상수(constant)로 분류하지 않고 토큰의 하나(string literal, ☞QR.1.1절)로 분류한다. 그러나 이 책에서는 편의상, 관례상 그냥 상수로 간주한다. C 문법 체계에서 문자열 상수를 상수로 분류하지 않는 이유는, 문자열형이란 데이터형이 없으므로 문자열 상수도 당연히  있을 수 없다고 보기 때문이다(☞2.7.3절 참고).

(【C프로그래밍】교재 "제2장 자료형과 선행처리기 30쪽  [그림 2-1] 자료형의 종류" 참조)

 

ㆍ터보C에서 문자열 상수는 큰따옴표(")와 텍스트를 포함하는 한 개 이상의 문자열 단위(string unit)로 구성된다.

 

ㆍ문자열 상수는 확장열을 포함할 수 있다.

 

ㆍ한 개의 문자열 상수를 몇 개의 문자열 단위로 분할하여 여러 줄에 걸쳐서 기술할 수도 있다. 예를 들어,

"test1text2text3"는 아래와 동일하다.

 

"text1" "text2" " text3" <- 각 문자열 단위 사이에는 공백문자(whitespace)만 삽입할 수 있다.

                                          그 밖의 문자가 삽입될 경우에는 서로 다른 문자열 상수로 간주한다.

또는,

"text1"

"text2"

"text3"

 

또는 확장열인 행계속(line continuation) 문자를 써서

"text1\

text2\

text3"

↖ 반드시 행의 제1열(column)에서 시작해야 한다.

 

ㆍ모든 문자열 상수의 기억부류(storage class)는 정적(static)이며 문자열은 문자 배열과 같은 바이트 구조를 가진다. (160~161쪽)

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼