Двойной (&&) - значит логическое "И":
если (Вася->Пьян && Вася->Барагозит) Менты. Приехать ()
И что характерно приедут.
if (5 > 2 && 7<4) НихренаНеПризойти ();
Одинарный & в функции или при объявлении:
int a = 2;
int& s = a;
a = 8;
Вывести (s); //выведет 8, ибо оба по сути одно и то же, названное разными именами.
В функциях такая же тема:
void f(int a, int&b) { a = 3; b = 8}
int A = 4; int B = 2;
f(A, B);
Вывести (A, B); // Выведет 4, 8
Одинарный & с уже имеющимся элементом вернет ссылку на него.
int a = 3;
int* b = &a; // звездочка как раз и значит ссылку, теперь b - ссылка на а.
//Получить из этой ссылки а, можно разименовав ссылку:
(*b) = 22;
Вывести (а) //выведет 22.
Ну и никто не запрещает получать ссылку на ссылку на ссылку на ссылку на ссылку... Солженицын бы слюной захлебнулся от удовольствия.
auto c = &b;
auto d = &c;
auto e = &d;
int***** f = &e; =)
Одинарный & между двумя элементами : побитовое сравнение. Пишу в двоичной системе:
byte a = 01101111;
byte b = 11011001;
byte c = a & b;
Вывести (с); выведет:
с = 01001001;
a = 01101111;
b = 11011001;
(это тут для наглядности, всё сравнилось поразрядно)
Как-то так. Всё зависит от ситуации. А еще этот оператор можно переопределить, но это уже совсем другая история.
Другие языки программирования и технологии
Язык Arduino(C, C++) Нужна помощь: в изучении arduino встретил знак "&" помогите, пожалуйста, что он означает!
Андрей Трофимов
&b вернет не ссылку, а указатель. Ссылка в С++ совсем другое, в С ссылок нет.
Xxxxx 77777
Спасибо, помог)
В С это логическое И
В Си-подобных языках один и тот же оператор может очень многое означать.
Иные операторы вообще можно перегрузить.
Поэтому вне контекста ничего он не значит.
Если это в условии (if), то использовать & нежелательно, лучше &&, так как он более оптимизирован: если 1 условие ложно, то второе он не проверяет, а сразу делает false.
Это не только удобно в некоторых случаях (например, когда сперва проверяем переменную на nullptr, а затем проверяем в ней еще что-то - надо, чтобы если nullptr, то второе условие не проверялось), но и чуть-чуть быстрее работает.
Иные операторы вообще можно перегрузить.
Поэтому вне контекста ничего он не значит.
Если это в условии (if), то использовать & нежелательно, лучше &&, так как он более оптимизирован: если 1 условие ложно, то второе он не проверяет, а сразу делает false.
Это не только удобно в некоторых случаях (например, когда сперва проверяем переменную на nullptr, а затем проверяем в ней еще что-то - надо, чтобы если nullptr, то второе условие не проверялось), но и чуть-чуть быстрее работает.
Зависит от контекста. Если используется в описании типа, то означает ссылку:
int i;
int &ref = i;
ref = 5; // same as i=5
если как бинарная операция (над двумя операндами), то битовое И (часто используется как маска, в ардуино особенно):
byte a = b & 0xF0; // reset 4 lower bits
если как унарная операция, то взятие адреса:
int i;
int *pi = &i;
*pi = 5; // same as i = 5
int i;
int &ref = i;
ref = 5; // same as i=5
если как бинарная операция (над двумя операндами), то битовое И (часто используется как маска, в ардуино особенно):
byte a = b & 0xF0; // reset 4 lower bits
если как унарная операция, то взятие адреса:
int i;
int *pi = &i;
*pi = 5; // same as i = 5
вариантов много: побитовое И, взятие адреса или ссылка
Похожие вопросы
- Программка c# нужна помощь
- (C++) Нужна помощь в создании метода "пузырька".
- c++ нужна помощь
- C++ Нужна Помощь
- нужна помощь в изучении ассемблера
- C++ ,очень нужна помощь ...
- какой язык легче; c, c++, c#
- c++ нужна помощь )
- C#. Нужна помощь.
- (C++) Нужна помощь в написании 4-х программ. максимально простые, уровень с++ нулевой практически.