Кто каким ИИ пользуется для написания скетчей?

Возможно. По крайней мере, судя по приведённой БПФ, эти гармоники ускользают от возможностей данного прибора (не Keysight, конечно, но, «маємо те, що маємо»).

на аналоговом осциллографе виден даже 1%, у @dimax неплохой с 2 гигасемплами думаю 1% тоже будет видно
А если надо знать точно то C6-22 в помощь (только кому эта точность нужна)

А разве не эквивалентно ‘а = 1’? 6, если ‘a = (1,2,3,4,6)’, не? Лень проверять.)

Не. Операция “запятая” выполняется слева направо. Т.е. ,теоретически, а=1, потом а=2, … а=6. Но оптимизатор выкусит все эти присвоения и оставит последнее.

А еще бывает вот такой вот кот:

uint ieee80211_is_robust_mgmt_frm(int param_1,uint param_2) {
  uint uVar1;
  
  uVar1 = 1;
  if (((param_1 - 0xa0U & 0xffffffdf) != 0) && (uVar1 = 0, param_1 == 0xd0)) {
    if ((int)param_2 < 0x17) {
      uVar1 = 1;
      if (3 < (int)param_2) {
        uVar1 = 0x708890U >> (param_2 & 0x1f) & 1 ^ 1;
      }
    }
    else if (param_2 != 0x7f) {
      uVar1 = 1;
    }
  }
  return uVar1;
}

Обрати внимание на if, на вторую его половину. && делается с последним выражением. А присвоение, стоящее перед ним - просто выполняется. Такой вот код генерит GCC для ESP32 :))) Это дизассемблированное. “Молоко восстановленное“

Не поленился. С goodbolt что то муторно, уже забыл как делать вывод на консоль.( Проще с Ардуино.

void setup() {
  Serial.begin(9600);
  
  int a,c;
  a = (1, 2, 3, 4, 6);
  c = 1, 2, 3, 4, 6;
  Serial.print("a = "); Serial.println(a);
  Serial.print("c = "); Serial.println(c);
}

void loop() {
}

2 лайка

Вы правы, так и есть.

А вот, например,

int a = 1,2,3,4,6;

недопустимо в принципе – синтаксически неверно.

В то же время

int a = (1, 2, 3, 4, 5, 6);

Вполне нормально и присваивает a значение 6.

Но я бы не стал использовать слово “эквивалентно”. Дело в том, что все эти значения (до шестёрки) будут реально вычисляться. В случае констант (как здесь) – это пофиг, а вот если так:

// Есть функция
int kaka(void) {
	Serial.println("Kaka");
	return 10;
}

// .....

// а потом где-то пишем
int a = (1, 2, kaka(), 4, 5, 6);

Здесь, хотя в данном выражении a просто получает значение 6, функция kaka() будет реально вызвана и своё в сериал выплюнет.

Используя то, что все члены выражения в скобках реально будут вычисляться (в порядке слева направо), можно, на побочных эффектах, такого наговнокодить - мама не горюй!

А , вы про скобки?! Я про это даже не подумад. Я всегда пишу в скобках. Но вот , что с==1 можно получить, я не знал, спасибо за информацию.

Да, warning-и пишет и для а, и для с

А вон, скриншот выше же. Я, честно говоря, такое вообще в первый раз вижу.

Какой скриншот, Вы о чём?

Сообщение номер тысяча, самый его низ.

И что про него? Я не понимаю Вашего вопроса.

Там выражение, которое вы назвали синтаксически неверным, компилируется и дает результат ц=1. Что вообще говоря, неожиданно. Надо взять на вооружение.

Я хоть и склеротик полный, но в голове ещё что то держится.)

1 лайк

Интересно. Поучается, что это эквивалент

c=1;
2;
3;
6;

Но компилируется. Ну и хорошр, раз так. Очень полезный трик для обфускации кода.

Нет, Вы ошиблись. Там другое выражение. Про то, что там, я как раз написал

Сравните выражение, которое там:

с тем, о котором пишу я

Неужели не видите разницы? Ну тогда попробуйте моё скомпилировать :slight_smile:

при объявлении с инициализацией не работает, что-ли?

нет.
У запятой самый низкий приоритет.
a = 1, 2, 3;
это
a = 1;
2 ;
3;
При этом int a = 1,2,3;
это
int a=1;
int 2;
int 3;
Что невозможно, так как бессмысленно и абсурдно :wink:
Ок? Ты и сам это знал, просто видимо задумался!

1 лайк

Ну, типа того.

Кстати, чтобы уж не быть голословным в

Держите

#define print(t, x, y) do { Serial.print(t#x"="); Serial.print(x); Serial.print("; "#y"="); Serial.println(y);} while (false)

void setup(void) {
	Serial.begin(9600);
	int a = 132, b = 321;
	// Задача: поменять местами значения a и b, не используя временную переменную
	print("Before: ", a, b);
	a = a + b, b = a - b, a = a - b;
	print(" After: ", a, b);
}

void loop(void) {}
1 лайк

Вот, вчерашняя новость :slight_smile:
…пора уже с учителей спрашивать почему дети не пользуются ИИ на уроках?