정수와 char을 비교할 수 있는지 알고 싶습니다. Javascript에서 "==="일 수있는 것이 있습니다. char와 int 사이의 엄격한 비교
'a' == 97
때문에
1
편집을 OUPUT 것이다 : 나는 내가 할 수있는 방법
0
을 OUPUT 것
compare('a', 97)
뭔가를 원하십니까?
감사합니다.
정수와 char을 비교할 수 있는지 알고 싶습니다. Javascript에서 "==="일 수있는 것이 있습니다. char와 int 사이의 엄격한 비교
'a' == 97
때문에
1
편집을 OUPUT 것이다 : 나는 내가 할 수있는 방법
0
을 OUPUT 것
compare('a', 97)
뭔가를 원하십니까?
감사합니다.
예, 가능합니다. 은 또 다른 정수형 일뿐만 아니라 실제로는 'a'
자체가 int
인 리터럴입니다. 따라서 'a' == 97
은 완벽하게 유효한 논리 표현식입니다. 이 값은 구현에 따라 정의됩니다.
OP는''a''를 검사하는 방법을 묻고 있습니다. 와 '97'은 같은 대상입니다. 엄격한 비교는 동일한 유형이 아닌 경우'false'를 반환합니다. – Blender
@Blender : 둘 다 임시 값이므로 "2 == 2"가 아닌 "같은 대상"이 될 수 없습니다. 실제로, 피연산자가 lvalues가 아니기 때문에, 나는 그것이 "그들이 같은 대상인지"묻는 것이 의미가 있다고 생각하지 않습니다. –
@KerrekSB : OP에서 요구 한 것이 맞는지 아직 확신이 없지만 대답으로 대답했습니다. –
'a'
및 97
은 개체가 아닌 값이므로 동일한 개체인지 묻는 것은 의미가 없습니다. 이 값들을 객체에 저장하고 그 객체에 대한 포인터를 가지고 있다면 포인터를 비교할 수 있습니다. 반면에 당신이 'a'
이 char
및 97
이 int
인 것을 구분하는 비교를 원한다면
, 당신은 운이 또한입니다. C에서는 'a'
이 int
이고 char
이 아닙니다. 변수 유형 char
또는 int
의 경우
sizeof (char) 및 sizeof (int)를 확인하십시오. – Extaze
@Extaze'sizeof ('a')'및'sizeof (97)'를 확인하십시오. ''a''는 처음에는 * char *가 아닙니다. 따라서 sizeof (char)는 sizeof (int)와는 다르다. –
당신은 컴파일시에 알고, 그래서 점은 ==
및 ===
연산자를 가지고에 존재하지 않는다.
나는 비교 ('A'를, 97)
함수인가요 뭔가를 원하십니까? 그렇다면 인수의 유형은 컴파일 타임에 고정되므로 구현할 수 없으며 해당 함수를 호출하는 것이 적절하지 않을 수 있습니다. 컴파일 시간에 인자가 같은 타입인지 아닌지 알고 있습니다.
또한, 우리가
c = (char)40;
i = 40;
무엇을해야 compare(c,i)
수익이 있다면?
아마 우리에게 어떤 동기 부여를 할 수 있습니다. 왜 그런 기능이 필요하다고 생각합니까?
==
전에 sizeof()
비교를 넣는 매크로를 작성할 수는 있지만 동일한 크기의 다른 유형을 구별하지 못하고 실제로는별로 의미가 없습니다.
문제 'a'의 유형도 'int'입니다. 원본 문자 집합이 ASCII와 호환되지 않는 경우에만 'a'와 '97'을 구별 할 수 있습니다. –
'a'는 int가 아닙니다.sizeof (int)와 sizeof (int)를 확인하십시오. – Extaze
글쎄,'char'의 크기와'int'의 크기는 일반적으로 다르지만 (보장 할 수는 없지만) 정수형 상수는'int' 형식을가집니다 C. printf ("% zu \ n", sizeof 'a');'를 시도하십시오. –