trap representation라는 게 어떤 용어 인가요?
글쓴이: noeoqzotngo / 작성시간: 일, 2015/10/18 - 4:06오후
안녕하세요 ~^^;
C 표준을 보다가 저런 표현을 봤는데, 어떤 용어인지 감이 안 잡히네요.
an object representation that need not represent a value of the object type.
라는 정의가 있는데.. 이 내용이 이해가 잘 안되서요. 대상체형의 값으로 나타낼 필요가 없다는 게..
구글링 계속 해보는데 영어 실력이 하찮어서 잘 와닿지 않습니다.
아신다면 답변좀 부탁드리겠습니다 ~
Forums:
저도 ㅇ_ㅇ;; 영맹이지만..
대부분의 내용을 보면. 표현 방법이라고 나오네요.
객체로 표현
숫자로 표현
문자로 표현
포인터로 표현
제 생각일 뿐 입니다. 정확하지 않습니다.
선언
the object type.
정의
an object representation that need not represent a value of the object type.
변수 초기화
an object representation that need represent a value of the object type.
A B
객체로 표현하는것은 객체형의 값으로 표현하지 않아도 된다.
an ~A that ~B
http://endic.naver.com/search.nhn?sLn=kr&searchOption=all&query=an%20that
B A
객체형의 값으로 표현하지 않아도 되는 객체 표시 ★★★★★
객체형의 값이 제시되지 않은 객체 표시 (방법) ★★★★★
객체형이 초기화 되지 않은 객체 표시. ★★★★★
객체형의 값이 없는 객체 표시
an
http://endic.naver.com/enkrEntry.nhn?sLn=kr&entryId=59e9b9a9b0954f38a3be2d8ba77f913c
representation
http://endic.naver.com/enkrEntry.nhn?sLn=kr&entryId=d4cd558649f94a29b727910ce178040b
represent
http://endic.naver.com/enkrEntry.nhn?sLn=kr&entryId=87aa706d0ec9444d9ea7c056eded4f7c
//초기화 되지 않은 값에 표현. ★★★★★
Trap Representations - c99 [again]
http://bytes.com/topic/c/answers/468901-trap-representations-c99-again
Trap 끌어모으다.
http://endic.naver.com/enkrEntry.nhn?sLn=kr&entryId=4c7263101c3c466c97f45a0c0c8bfa44
// ex1.
char x;
int i = x;
http://www.codeproject.com/search.aspx?q=trap+representation&x=9&y=12&sbo=kw
//
Tips and Traps for young programmers
http://www.codeproject.com/Articles/4008/Tips-and-Traps-for-young-programmers
Trap Representation, unsigned char and IA64 NaT
http://stackoverflow.com/questions/26451954/trap-representation-unsigned-char-and-ia64-nat
The Trap of Representation
http://www.tannerhiggin.com/the-trap-of-representation/
//
Resolving the difference between C and C++ with regards to object representation of integers.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2631.html
Certain object representations need not represent a value of the object type. If the stored value of an object has such a representation and is read by an lvalue expression that does not have character type, the behavior is undefined. If such a representation is produced by a side effect that modifies all or any part of the object by an lvalue expression that does not have character type, the behavior is undefined. Such a representation is called a trap representation.
특정 객체 표현은 오브젝트 유형의 값을 나타낼 필요는 없다.오브젝트의 저장된 값은 표현을 가지며, 캐릭터 타입을 가지고 있지 않는 식 좌변에 의해 판독되는 경우, 동작이 정의되지 않는다. 이러한 표현은 캐릭터 타입이없는 좌변 식으로 객체의 전체 또는 일부를 수정 부작용에 의해 제조되는 경우, 동작이 정의되지 않는다. 이러한 표현은 트랩 표현이라고합니다.
trap representation
http://stackoverflow.com/questions/6725809/trap-representation
//
https://en.wikipedia.org/wiki/Hash_table#Object_representation
Object representation
Several dynamic languages, such as Perl, Python, JavaScript, and Ruby, use hash tables to implement objects.
In this representation, the keys are the names of the members and methods of the object, and the values are pointers to the corresponding member or method.
펄, 파이썬, 자바 스크립트, 루비 등의 여러 동적 언어는 사용 해시 테이블은 객체를 구현합니다.
이 표현에서, 상기 키 부재 및 객체의 메소드의 이름, 값은 대응하는 부재 또는 방법에 대한 포인터이다.
https://www3.ntu.edu.sg/home/ehchua/programming/cpp/cp3_OOP.html
The OOP languages (such as Java, C++, C#) let you think in the problem space, and use software objects to represent and abstract entities of the problem space to solve the problem.
(자바, C ++, C #을 등) OOP 언어는 문제 공간에서 생각하게하고, 표현하고, 문제 공간의 추상적 인 실체가 문제를 해결하기 위해 소프트웨어 객체를 사용합니다.
The procedural-oriented languages focus on procedures, with function as the basic unit. You need to first figure out all the functions and then think about how to represent data.
절차 지향 언어는 기본 단위로서 기능, 절차에 초점을 맞 춥니 다. 먼저 모든 기능을 파악하고 데이터를 표현하는 방법에 대해 생각해야합니다.
http://www.json.org/
A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes.
A character is represented as a single character string.
A string is very much like a C or Java string.
문자열은 백 슬래시 이스케이프를 사용하여, 큰 따옴표로 감싸, 0 개 이상의 유니 코드 문자의 순서입니다.
문자는 하나의 문자열로 표시됩니다.
문자열은 C 또는 Java 문자열처럼 매우이다.
https://en.wikipedia.org/wiki/Pointer_(computer_programming)
Represented here are five integers: 2, 4, 3, 1, and 5. These five integers occupy 32 bits (4 bytes) each with the least-significant byte stored first (this is a little-endian CPU architecture) and are stored consecutively starting at address 0x1000.
여기 다섯 정수 표현 : 2, 4, 3, 1, 5이 다섯 개의 정수는 32 비트 (4 바이트) 제 저장된 최하위 바이트 각각을 (이 리틀 엔디안 CPU 아키텍처) 점유 연속적 저장된 주소가 0x1000에서 시작.
A null pointer has a value reserved for indicating that the pointer does not refer to a valid object.
Null pointers are routinely used to represent conditions such as the end of a list of unknown length or the failure to perform some action;
this use of null pointers can be compared to nullable types and to the Nothing value in an option type.
널 포인터는 포인터가 유효한 객체를 참조하지 않는다는 것을 나타 내기 위해 예약 된 값을 갖는다.
널 포인터 일상적 같은 알 길이 또는 몇몇 작업을 수행 할 수있는 오류의리스트의 끝과 같은 조건을 표현하는데 사용된다;
널 포인터의 사용은 널 유형 및 옵션 종류에 아무것도 값과 비교 될 수있다.
https://msdn.microsoft.com/en-us/library/twcxd6b8.aspx?f=255&MSPPError=-2147217396
Whatever data type it refers to, an Object variable does not contain the data value itself, but rather a pointer to the value. It always uses four bytes in computer memory, but this does not include the storage for the data representing the value of the variable. Because of the code that uses the pointer to locate the data, Object variables holding value types are slightly slower to access than explicitly typed variables.
그것이 지칭간에 데이터 타입, 오브젝트는 가변 데이터 값 그 자체가 아니라 값에 대한 포인터를 포함하지 않는다. 항상 컴퓨터 메모리에서 4 바이트를 사용하지만,이 변수의 값을 나타내는 데이터를위한 저장 영역을 포함하지 않는다. 때문에, 데이터를 찾을 값 유형을 들고 변수를 개체에 대한 포인터를 사용하는 코드의 명시 적으로 입력 변수와 접근에 약간 느립니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
...
Trap representation을 찾아보면 이런 얘기들이 나오는군요:
http://stackoverflow.com/questions/6725809/trap-representation
> A trap representation is a catch-all term used by C99 (IIRC not by C89) to describe bit patterns that fit into the space occupied by a type, but trigger undefined behavior if used as a value of that type.
http://www.ibm.com/developerworks/library/pa-ctypes3/
> A trap representation is a set of bits which, when interpreted as a value of a specific type, causes undefined behavior.
(제가 이해한 바로는) 예를 들어 말하자면 어떤 가상의 CPU에서 "포인터가 가리키는 주소는 반드시 MSB가 0이어야 한다"라는 규칙이 있고 그 규칙에 어긋나는 주소를 포인터 변수로 읽으려고 하면 에러가 발생한다고 할 때, 포인터 변수에 MSB가 1인 값이 들어있다면 trap representation이 된다는 얘기죠.
감사합니다.
shint님, jick님 답변 감사드립니다.
덕분에 이해하는데 도움이 됐습니다.
링크 하나하나 다 클릭해서 글도 읽어봤습니다. ㅎㅎ
정말 감사합니다 ^^;
댓글 달기