Borgir |
Отправлено: 07.10.2003, 07:01 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 48
|
Интересную вещь заметил. Есть у меня в программе некая переменная Answer типа AnsiString. И есть например такой текст:
CODE |
if(!Answer.Length()<12)
{
ShowMessage(IntToStr(Answer.Length()));
}
|
Так вот, при длине этой переменной равной 0, ShowMessage все равно срабатывает. Интересно, это глюк или я что-то не так делаю? |
|
Asher |
Отправлено: 07.10.2003, 08:11 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
По моему if(!Answer.Length()<12) кривая конструкция. Или пиши что тебе надо конкретно — if(Answer.Length()>=12) или не экономь скобки -
if(!(Answer.Length()<12))
P.S. не экономь скобки — время отладки стоит дороже.
не помню кто сказал, но в умной книжке
|
|
Borgir |
Отправлено: 07.10.2003, 12:16 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 48
|
Я естесственно написал по-другому (первый вариант Asher'а), но просто мне стало интересно, почему не работает первоначальная запись? В чем ее кривость? |
|
Asher |
Отправлено: 07.10.2003, 12:39 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
В порядке выполнения операций.
! выполнится первой.
предположим Answer.Length()=5, тогда
!Answer.Length() = 0 и все это < 12
если Answer.Length()=0, то после ! там будет 1, что все равно меньше 12
|
|