Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.01.2015, 18:12   #1
EVILKRE
 
Регистрация: 30.01.2015
Сообщений: 5
По умолчанию Помогите с синтаксисом ! (a=true and b=true)

Доброго времени суток! Прошу помочь с пониманием следующей дилемы... Почему программа выдает ответ " 1 ", ведь условие if (a=true and b=true) не должно выполняться при ложных значениях обеих переменных (ибо требование в условии - одновременная истина) ???

КОД


var
a,b:boolean;
begin
a:=false;
b:=false;


if (a=true and b=true) then begin
Writeln('1');
end;

if (a and b) then begin
Writeln('2');
end;


if (a=true) and (b=true) then begin
Writeln('3');
end;

if (a) and (b) then begin
Writeln('4');
end;

sleep(5000);
end.
EVILKRE вне форума
Старый 30.01.2015, 19:02   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Не надо создавать дубли своих тем в разных разделах форума. Это называется кросспостингом и наказывается.

Я ответил в вашей теме вот здесь http://www.programmersforum.ru/showp...82&postcount=2
Вадим Мошев вне форума
Старый 30.01.2015, 19:06   #3
EVILKRE
 
Регистрация: 30.01.2015
Сообщений: 5
По умолчанию

. Ссори за кросспостинг. просто тема горячая будет чувствую...
EVILKRE вне форума
Старый 30.01.2015, 20:26   #4
disbnt
Пользователь
 
Регистрация: 18.09.2014
Сообщений: 32
По умолчанию

Цитата:
Почему программа выдает ответ " 1 ", ведь условие if (a=true and b=true) не должно выполняться при ложных значениях обеих переменных
В этом условии получается истинное значение.
Тут прикол в приоритетах выполнения операторов

Код:
Operator                          Приоритет
-----------------------------------------------
@, not                             первый(высший)
*,/,div,mod,and,shl,shr,as   второй
+,-,or,xor                         третий
=,<>,<,>,<=,>=,in,is          четвертый(низший)
Разбираю :

Код:
a := false;
b := false;

// 1
if (a=true and b=true) then ...;
// 2 Меняю переменные на значения
if (false=true and false=true) then ...;
// 3 Тут приоритет оператора and выше чем = и ...
// true and false (битовая операция в итоге получается false
if (false=false=true) then ...;
// 4 Так теперь по очереди идет сравнение (false=false) получается true
if (true=true) then ...;
// Ну здесь и так понятно что будет true
disbnt вне форума
Старый 30.01.2015, 20:30   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от EVILKRE Посмотреть сообщение
просто тема горячая будет чувствую...
Это не даёт вам право кросспостить
Вадим Мошев вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
True И False noisor Паскаль, Turbo Pascal, PascalABC.NET 15 16.11.2014 20:40
конструкция while(true) sashonk Свободное общение 21 14.02.2014 15:08
Do While True NewStudent07 Microsoft Office Excel 3 17.04.2013 16:59
цикл while (true) filin2323 C# (си шарп) 1 13.07.2011 03:55
False,True Jony Wocker Общие вопросы C/C++ 2 06.02.2010 00:42