Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Логические операторы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Непонятный зверь исключающее или
lawer85
Отправлено: 04 Января, 2013 - 18:44:45
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Всем привет. Я только начинаю изучать PHP.

Составлял таблицу истина/ложь для логических операторов. Взял 2 переменные и присваивал им значения 0 0; 0 1 и т.д. и в ячейки подставлял результаты применения операторов ! && || ^ Если результатом была false (0) то конечно же на экран ничего не выводилось НО для оператора ^ (исключающее или) выводит на экран 0.

Почему?
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Января, 2013 - 19:03:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А код покажите.
 
 Top
lawer85
Отправлено: 04 Января, 2013 - 19:13:21
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $a = 0;
  4. $b = 0;
  5. $c1 = !$a;
  6. $c2 = $a||$b;
  7. $c3 = $a&&$b;
  8. $c4 = $a^$b;
  9.  
  10. $a = 0;
  11. $b = 1;
  12. $d1 = !$a;
  13. $d2 = $a||$b;
  14. $d3 = $a&&$b;
  15. $d4 = $a^$b;
  16.  
  17. $a = 1;
  18. $b = 0;
  19. $f1 = !$a;
  20. $f2 = $a||$b;
  21. $f3 = $a&&$b;
  22. $f4 = $a^$b;
  23.  
  24. $a = 1;
  25. $b = 1;
  26. $e1 = !$a;
  27. $e2 = $a||$b;
  28. $e3 = $a&&$b;
  29. $e4 = $a^$b;
  30. echo "<b>Таблица истинности</b>";
  31. echo "
  32. <table border=1 cellpadding=30 cellspacing=3>
  33.         <tr>
  34.                 <td>a</td>
  35.                 <td>b</td>
  36.                 <td>!a</td>
  37.                 <td>a||b</td>
  38.                 <td>a&&b</td>
  39.                 <td>a^b</td>
  40.         </tr>
  41.         <tr>
  42.                 <td>0</td>
  43.                 <td>0</td>
  44.                 <td>$c1</td>
  45.                 <td>$c2</td>
  46.                 <td>$c3</td>
  47.                 <td>$c4</td>
  48.         </tr>  
  49.         <tr>
  50.                 <td>0</td>
  51.                 <td>1</td>
  52.                 <td>$d1</td>
  53.                 <td>$d2</td>
  54.                 <td>$d3</td>
  55.                 <td>$d4</td>
  56.         </tr>  
  57.         <tr>
  58.                 <td>1</td>
  59.                 <td>0</td>
  60.                 <td>$f1</td>
  61.                 <td>$f2</td>
  62.                 <td>$f3</td>
  63.                 <td>$f4</td>
  64.         </tr>  
  65.         <tr>
  66.                 <td>1</td>
  67.                 <td>1</td>
  68.                 <td>$e1</td>
  69.                 <td>$e2</td>
  70.                 <td>$e3</td>
  71.                 <td>$e4</td>
  72.         </tr>          
  73. </table>"
  74. ?>
  75.  
 
 Top
OrmaJever Модератор
Отправлено: 04 Января, 2013 - 19:18:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




потому что ^ это не логический, а побитовый оператор, а все побитовые операторы возвращают число.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Января, 2013 - 19:19:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А, ну так и должно, если вы хотите получать булевые значения, то приведите результаты к ним:
PHP:
скопировать код в буфер обмена
  1. $c1 = (bool) !$a;
  2. $c2 = (bool) $a||$b;
  3. $c3 = (bool) $a&&$b;
  4. $c4 = (bool) $a^$b;
  5. // и т.д..

а если целочисленные, то к ним:
PHP:
скопировать код в буфер обмена
  1. $c1 = (int) !$a;
  2. $c2 = (int) $a||$b;
  3. $c3 = (int) $a&&$b;
  4. $c4 = (int) $a^$b;
  5. // и т.д..
 
 Top
Саныч Модератор
Отправлено: 04 Января, 2013 - 19:30:14
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




DeepVarvar, а к булевому-то зачем приводить... Логические операторы и так булевое значение вернут...

lawer85, исключающее или в PHP - это xor. Кстати не помню ниразу, чтобы я его где-то писал Улыбка


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
lawer85
Отправлено: 04 Января, 2013 - 19:35:00
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Спасибо всем пояснения.
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Января, 2013 - 21:27:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Саныч пишет:
а к булевому-то зачем приводить
да я копипастом для всех показал в качестве примера чтобы еще вопросы не возникли почему я не везде к нужным типам привожу, хотя может я и не прав и вернее было сделать с учетом типов...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB