2013-05-15 3 views
0

정수와 char을 비교할 수 있는지 알고 싶습니다. Javascript에서 "==="일 수있는 것이 있습니다. char와 int 사이의 엄격한 비교

'a' == 97 

때문에

1 

편집을 OUPUT 것이다 : 나는 내가 할 수있는 방법

0 

을 OUPUT 것

compare('a', 97) 

뭔가를 원하십니까?

감사합니다.

+2

문제 'a'의 유형도 'int'입니다. 원본 문자 집합이 ASCII와 호환되지 않는 경우에만 'a'와 '97'을 구별 할 수 있습니다. –

+0

'a'는 int가 아닙니다.sizeof (int)와 sizeof (int)를 확인하십시오. – Extaze

+1

글쎄,'char'의 크기와'int'의 크기는 일반적으로 다르지만 (보장 할 수는 없지만) 정수형 상수는'int' 형식을가집니다 C. printf ("% zu \ n", sizeof 'a');'를 시도하십시오. –

답변

2

예, 가능합니다. 은 또 다른 정수형 일뿐만 아니라 실제로는 'a' 자체가 int 인 리터럴입니다. 따라서 'a' == 97은 완벽하게 유효한 논리 표현식입니다. 이 값은 구현에 따라 정의됩니다.

+0

OP는''a''를 검사하는 방법을 묻고 있습니다. 와 '97'은 같은 대상입니다. 엄격한 비교는 동일한 유형이 아닌 경우'false'를 반환합니다. – Blender

+1

@Blender : 둘 다 임시 값이므로 "2 == 2"가 아닌 "같은 대상"이 될 수 없습니다. 실제로, 피연산자가 lvalues가 아니기 때문에, 나는 그것이 "그들이 같은 대상인지"묻는 것이 의미가 있다고 생각하지 않습니다. –

+0

@KerrekSB : OP에서 요구 한 것이 맞는지 아직 확신이 없지만 대답으로 대답했습니다. –

1

'a'97은 개체가 아닌 값이므로 동일한 개체인지 묻는 것은 의미가 없습니다. 이 값들을 객체에 저장하고 그 객체에 대한 포인터를 가지고 있다면 포인터를 비교할 수 있습니다. 반면에 당신이 'a'char97int 인 것을 구분하는 비교를 원한다면

, 당신은 운이 또한입니다. C에서는 'a'int이고 char이 아닙니다. 변수 유형 char 또는 int의 경우

(반대로 PHP에) C에서
+0

sizeof (char) 및 sizeof (int)를 확인하십시오. – Extaze

+2

@Extaze'sizeof ('a')'및'sizeof (97)'를 확인하십시오. ''a''는 처음에는 * char *가 아닙니다. 따라서 sizeof (char)는 sizeof (int)와는 다르다. –

0

당신은 컴파일시에 알고, 그래서 점은 ===== 연산자를 가지고에 존재하지 않는다.

나는 비교 ('A'를, 97)

함수인가요 뭔가를 원하십니까? 그렇다면 인수의 유형은 컴파일 타임에 고정되므로 구현할 수 없으며 해당 함수를 호출하는 것이 적절하지 않을 수 있습니다. 컴파일 시간에 인자가 같은 타입인지 아닌지 알고 있습니다.

또한, 우리가

c = (char)40; 
i = 40; 

무엇을해야 compare(c,i) 수익이 있다면?

아마 우리에게 어떤 동기 부여를 할 수 있습니다. 왜 그런 기능이 필요하다고 생각합니까?

== 전에 sizeof() 비교를 넣는 매크로를 작성할 수는 있지만 동일한 크기의 다른 유형을 구별하지 못하고 실제로는별로 의미가 없습니다.