Signed/unsigned comparison
От: Андрей Тарасевич Беларусь  
Дата: 06.08.04 07:18
Оценка: 16 (5)
#Имя: FAQ.cpp.sigunsig
NG>Объясните каким правилом разруливается ситуация сравнения знаковых/беззнаковых целых в следующем примере:

Сравнения знакового и беззнакового делается как беззнаковое. Т.е. знаковое значение приводится к беззнаковому типу.

NG> int i = -1;

NG> unsigned int ui = 10;

NG> if (i < ui)

NG> {
NG> std::cout << "WOW" << std::endl;
NG> }
NG> else
NG> {
NG> std::cout << "BAD" << std::endl;
NG> }

NG>На VC6 SP4 сравнение в данном примере всегда беззнаковое, и результат сравнения всегда false


Разумеется, false. '-1' после приведения к 'unsigned int' в VC6 — это 4294967295, что больше, чем 10.
Best regards,
Андрей Тарасевич
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.