![]()
мда. Мы еще с ++ толком не разобрались, нам уже !! подсовывають демоны. ![]()
Тогда вопрос (нет компа под рукой проверить)
А если
signed int n = -1;
n =!! n;
Что выдаст? Судя по всему положительную единичку.
Именно так и будет. (-1) инвертируется в ноль, а потом ноль в единицу.
Кстати, именно ли в единицу - я точно не знаю, но скорее всего положительное число больше ноля. Потому что отрицание ( ! ) это булевая операция и всегда по модулю!
Я, конечно, извиняюсь, но чёй-то оно не работает ![]()
bool n;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
n = !! n;
digitalWrite(LED_BUILTIN, n);
delay(1000);
}
Или это только приведение к ненулевому результату?
Что не работает? Вы что ожидали, что светодиод будет гореть или что потухнет? Мне вот из Вашего кода не очевидно.
PS. В примере Евгения n - числовая переменная. Для булевой n = !!n вообще ничего не меняет.
ну семён семёнович, n байт, пусть там лежит 73, отпечатай в компорт после приведения
Блин, сорян.
Енто блинк с ожиданием моргания, ибо выше сказанное предположил как замену ПРАВИЛЬНОГО инвертирования.
опять толстый ленится… инициализацию не провел…
bool n = false; // инициализируем
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
n = !!n; // двойное отрицание - теперь работает предсказуемо
digitalWrite(LED_BUILTIN, n);
delay(1000);
}
будет же работать ?))) а то я не уверен))) в его способе может быть мусор если не инициализировать…
А я уже несколько раз предлагал администрации ввести “минусы” или смайлики ![]()
Так это ж совсем не то. Я ведь чё писал:
Т.е. n - оно int (или ещё чего числовое). Имеет какое-то значение. Его надо оставить нулём, если оно и так ноль или сделать единицей, если оно не ноль. Попробуйте.
void setup() { pinMode(LED_BUILTIN, OUTPUT); }
void loop() {
static int v = -1;
digitalWrite(LED_BUILTIN, !!v);
v = ~v;
delay(1000);
}
не расстраивайтесь вы так, ктод мог подумать если 1=1, а 0=0, надо было сделать так что бы 1=0, а 0=1, при этом с двойным отрицанием, вот пользуйтесь))) а то я не понял что он должен все таки мигать, и думал из за мусора меняется…
А чё мне переживать то. Тут уже проводился “конкурс” на самый маленький блинк! И я там не победил, так что, - ещё огого!
А кто победил?
Да вроде Зелёный с 20-ю байтами ![]()
давно читал, и тема редактировалась… терлась, насколько помню победил тот кто игрался с регистрами,
или тот кто асемблером пудрил мозги)))Зелёный с 20-ю байтами надо посмотреть… там не учитывался загрузчик наверняка…
и как грузить это… но может и победил)))
void setup(){DDRB=255;}
void loop(){PINB=32;delay(500);}
а вот так я вас победил ?))) загрузчик надо вычесть из памяти!
Скетч использует 600 байт (1%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байт для локальных переменных. Максимум: 2048 байт.
скучно че то))) и народ как то резко весь в сети поумнел, вообще не агрятся на меня…
Молодцом!
не факт))) не помню уже печатал кто или нет… если нет, может кому будет интересно… попробуйте там опубликовать от своего имени, если не было, и точно победите))) отказываюсь от всех авторских прав, и передаю их вам
ты не понял, должно написать скетч использует 19 байт, тогда победишь
Без проблем: n = !!!n;