Условие не работает с отрицательными значениями. Что делать
- Войдите на сайт для отправки комментариев
Сб, 11/05/2019 - 20:09
У меня в коде был примерно вот такой элемент (я раскрыл переменные для ясности).
if (-100 < 500) {
// какой-то код
}
но условие не возвращает истину. Что делать в таком случае?
Ради интереса глянул проект у Гайвера, где он пишет такое ? - int time [0]=millis();
У меня в коде был примерно вот такой элемент (я раскрыл переменные для ясности).
if (-100 < 500) { // какой-то код }но условие не возвращает истину. Что делать в таком случае?
А так?
if ((-100) < 500) { // какой-то код }Хотя мы не знаем, чего там за переменные - может Вы взяли беззнаковые - с Вас станется...
А так?
if ((-100) < 500) { // какой-то код }Без толку. Приоритет унарного минуса значительно выше. Это просто ТС обкурился чуток.
У меня в коде был примерно вот такой элемент (я раскрыл переменные для ясности).
if (-100 < 500) { // какой-то код }но условие не возвращает истину. Что делать в таком случае?
Для ясности - это бред.
Запустите, прямо так с константами и убедитесь, что всё работает нормально (ну, или Вы станете первым в галактике, у кого не работает). А что уж там у Вас за переменные и что Вы там раскрыли или закрыли - того мы не знаем, ибо тайна сия велика есть.
Без толку. Приоритет унарного минуса значительно выше. Это просто ТС обкурился чуток.
[/quote]
Где-то - может в фокспро или еще в каком раритете было не так и после этого я стал добавлять скобки для верности и наглядности. Привычка :)
Конкретно так как выложили пробовали, без переменных? Думаю дело в типах этих самых переменных, они у Вас беззнаковые. Попробуйте явно привести
if ( (int)x < (int)y )...
Нерешаемо при современном уровне развития циффилизации, вот ИИ сделают, тогда может он что поймет в темных скетчах ТС.
Нерешаемо при современном уровне развития циффилизации, вот ИИ сделают, тогда может он что поймет в темных скетчах ТС.
Если он интеллект - пошлет и не станет разбираться. Это как с разумными инопланетянами.
Как пошлет?! Он и слов нужных не найдет. Эти слова изучают не в классах школы, а в коридорах. ИИ такого знать не может. Кстати забавно, ограничение для ИИ выходит. Матюкатся не должен уметь. И по этому факту его от естественного можна отличить )))
boolean flag1 = 0; int last_time[6] = {0, 0, 0, 0, 0, 0}; // создаю 5 переменных, запоминающих време после включения (миллис) boolean flag = 0; void setup() { // put your setup code here, to run once: randomSeed(analogRead(0)); // беру рандомное значение с аналогового пина 0 Serial.begin(9600); pinMode(3, INPUT_PULLUP); // подключаю кнопку } void loop() { // put your main code here, to run repeatedly: digitalWrite(8, LOW); digitalWrite(9, LOW); while(digitalRead(3)) { } delay(2000); int tim[4] = {random(200, 1000), random(200, 1000), random(200, 1000), random(200, 1000)}; // создаю 4 рандомных промежутка между нажатиями for (int i = 0; i < 5; i++) { // пищалка пищит 5 раз tone(5, 1000, 70); if (i != 4) {delay(tim[i]); } // делаю промежутки после сигналов кроме последнего(после него не нужно) } while(digitalRead(3)) { //жду первое нажатие last_time[0] = millis(); // запоминаю время, когда произошло первое нажатие // во избежании дребезга 100 милисекунд жду } Serial.println("Есть."); delay(70); for (int i = 0; i < 4; i++) { // четыре раза жду нажатий while(1) { if (!digitalRead(3)) { Serial.println("Кнопка нажата."); Serial.println("tim[i] - 500"); Serial.println(tim[i] - 500); Serial.println("millis() - last_time[i]"); Serial.println(millis() - last_time[i]); Serial.println("tim[i] + 500"); Serial.println(tim[i] + 500); if (tim[i] - 500 < millis() - last_time[i]) { if(millis() - last_time[i] < tim[i] + 500){ Serial.println("Условие выполненно."); last_time[i + 1] = millis(); delay(100); break; } else { Serial.println("Слишком медленно."); flag = 1; delay(70); break; } } else { Serial.println("Слишком быстро."); flag = 1; delay(70); break; } delay(70); } } } delay(500); if (flag == 1) { tone(5, 500, 500); } else { tone(5, 5000, 500); } // звук победы }Посмотри на 44 и 45 строку. Вот что выводит порт :
Как пошлет?! Он и слов нужных не найдет. Эти слова изучают не в классах школы, а в коридорах. ИИ такого знать не может. Кстати забавно, ограничение для ИИ выходит. Матюкатся не должен уметь. И по этому факту его от естественного можна отличить )))
- Ты сильная, ты справишься!
- Я умная. Я даже не возьмусь.
Как пошлет?! Он и слов нужных не найдет. Эти слова изучают не в классах школы, а в коридорах. ИИ такого знать не может. Кстати забавно, ограничение для ИИ выходит. Матюкатся не должен уметь. И по этому факту его от естественного можна отличить )))
Очень достойно с вашей стороны.
Как пошлет?! Он и слов нужных не найдет. Эти слова изучают не в классах школы, а в коридорах. ИИ такого знать не может. Кстати забавно, ограничение для ИИ выходит. Матюкатся не должен уметь. И по этому факту его от естественного можна отличить )))
Интеллект - и не умеет?
Какой же он тогда интеллект?
Как пошлет?! Он и слов нужных не найдет. Эти слова изучают не в классах школы, а в коридорах. ИИ такого знать не может. Кстати забавно, ограничение для ИИ выходит. Матюкатся не должен уметь. И по этому факту его от естественного можна отличить )))
- Ты сильная, ты справишься!
- Я умная. Я даже не возьмусь.
Молодцы!! Так держать!! Пришли на форум по ардуино и строите из себя участниц Дома 2. С таким успехом идите в любую соц. сеть и сидите там. Унижайте остальных. Умные люди здесь помогают новичкам, ну а если нет, то кто в будующем вам хлеб с водой вам подаст.
P.S Да, действительно, не одного слова матного не употребил)
if (tim[i] - 500 < millis() - last_time[i]) { if(millis() - last_time[i] < tim[i] + 500){ Посмотри на 44 и 45 строку. Вот что выводит порт :Из-за недостатка теоретических знаний у Вас все перепуталось в голове - int, long
Напишите 44 строку так: if (tim[i] < (millis() - last_time[i]+500)) - и она заработает.
Посмотри на 44 и 45 строку. Вот что выводит порт :
Помните анекдот, как НР кричал едва не попавшему по колёса пешеходу: "Для Вас, Козлов, переходов понаделали!"
Вот так и у Вас. Вам компилятор как человеку подсказывает, что Вы ошиблись,
xxx.ino:20:23: warning: narrowing conversion of 'random(200l, 1000l)' from 'long int' to 'int' inside { } [-Wnarrowing] xxx.ino:20:42: warning: narrowing conversion of 'random(200l, 1000l)' from 'long int' to 'int' inside { } [-Wnarrowing] xxx.ino:20:61: warning: narrowing conversion of 'random(200l, 1000l)' from 'long int' to 'int' inside { } [-Wnarrowing] xxx.ino:20:80: warning: narrowing conversion of 'random(200l, 1000l)' from 'long int' to 'int' inside { } [-Wnarrowing] xxx.ino:44:40: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] xxx.ino:45:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]но Вам плевать на его подсказки - Вы уверены, что накосячил он, а не Вы :)
Умные люди здесь общаются между собой. В том числе, и с умными новичками. А придуркам здесь никто не помоагет - это ж технический форум, а не конгрегация Матери Терезы.
Умные люди здесь общаются между собой. В том числе, и с умными новичками. А придуркам здесь никто не помоагет - это ж технический форум, а не конгрегация Матери Терезы.
Волшебно ! Очень понравилось :)