За последние 24 часа нас посетили 17457 программистов и 1279 роботов. Сейчас ищут 1425 программистов ...

Что делают два восклицательных знака?

Тема в разделе "Вопросы от блондинок", создана пользователем Catrina, 8 июн 2015.

  1. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Еще надо помнить про порядок справа налево
    Код (Text):
    1. $a = 1;
    2. $b = 2;
    3. echo $a + $a += $b; // 6
    4.  
    5. $a = 1;
    6. $b = 2;
    7. echo $a += $b + $a; // 4
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    А еще нужно просто стараться писать нормально, без таких вот шарад и заморочек, и тогда не будет никаких проблем :)
     
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Это как фигурные скобки в однострочных if`ах. Вроде как не нужны и без них даже смотрится веселее, но стоит накосячить и веселый дебаг на час другой гарантирован ) Лучше лишняя строчка, чем вылавливать такие закидоны.
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Фигурные скобки - это святое.
     
  5. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Хорошо, тогда почему
    Код (Text):
    1.  
    2. $a = 1;
    3. print $a + $a + ++$a ;
    тоже 4? :) Вообще, мне ссылку на такие странности в этой теме и дали.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Потому что это тоже выражение. Какая разница, вардамп или принт? Выражение есть выражение. Оно вычисляется.
     
  7. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Это другое выражение, там ко всему, что было раньше прибавлена ещё единица.

    Код (PHP):
    1. $a = 1;
    2. //Два операнда
    3. print $a + ++$a ; //4
    4.  
    5. $b = 1;
    6. //Три операнда
    7. print $b + $b + ++$b ; //4 
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    как это работает объяснил Fell-x27
    а тут срабатывает правило ассоциативности. у плюса она левая. значит выражение вычисляется слева-направо. в итоге вычисляться будет, как будто оно такое:
    Код (PHP):
    1. print ($b + $b) + ++$b ; //4    
     
  9. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Всё понятно, спасибк!
     
  10. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    немножко некропостну
    https://learn.javascript.ru/string#tasks - задача "проверьте на спам"
    посмотрите решение этой задачи.
    видимо таким образом приучают писать сокращенный код?