우리는 signed와 unsigned를 비교할 때 부호있는 값을 부호없는 값으로 변환하고 int를 short와 비교할 때 컴파일러가 더 작은 값을 더 큰 값으로 변환한다는 것을 알고 있습니다. 그러나 서명 된 int x = 0xdeadbeef와 unsigned short y = 0xffff를 비교 한 다음 unsigned short를 int로 변환 한 후 x의 부호없는 값보다 작아야 비교시 y가 0x0000ffff가되어야하는지 확인하기 위해이 코드를 작성했습니다. 하지만 내 코드는 x가 y보다 큰 if 조건으로 들어 가지 않습니다. 누군가 나에게 설명 할 수 있을까요?signed int와 unsigned short의 비교 ++
코드 스 니펫 :
"X가 크다"고 인쇄되지 않는 코드를 실행#include<iostream>
using namespace std;
int main(){
unsigned int x=0xDEADBEEF;
unsigned short y= 0xFFFF;
if((signed)x > y)
cout<<"X is larger"<<endl;
return 0;
}
.
(부호가있는) x가 음수이기 때문입니다. – cleblanc
하지만 서명되지 않은 서명자와 비교할 때 컴파일러가 부호없는 서명으로 다시 변환하면 안됩니까? –
btw 코드는 ** C++ ** –