fst += (sec - (sec = fst)); нет ли здесь неопределенности?

163
10 октября 2019, 22:10

нормальный ли это способ дать переменным обменяться значениями без использования третьей? fst и sec в шапке обычные int переменные, пишу на java. Выглядит, будто есть неопределенность, но попробовал в пузырьке в качестве swap делать это, и сортировка прошла верно.

Answer 1

Неопределенности в коде нет (и я не знаю, может ли она быть вообще в синтаксически правильном коде на java). При условии, что fst и sec -- примитивные числовые типы, этот код действительно осуществляет обмен значений. Другое дело, что это может быть неочевидно и может быть понято неправильно, т.е. код не является неопределенным, но является непрозрачным. Читаемость, ясность кода -- в подавляющем большинстве случаев важнее, чем его эффективность. К тому же я не думаю, что у такого кода есть преимущество в эффективности перед традиционным

  int tmp = a;
  a = b; b = tmp; 

так что я бы не стал так писать. И я бы не пришел в восторг и не одобрил бы автора, если бы мне пришлось такое читать.

READ ALSO
Проблема с subscription при schema stitching в apollo server

Проблема с subscription при schema stitching в apollo server

Помогите найти ошибку как правильно подключить subscription при schema stitching

152
Как написать скрипт куков, который будет определять посетил ли юзер страницу?

Как написать скрипт куков, который будет определять посетил ли юзер страницу?

Есть страница, на которой выведены ее дочерние элементы (другие страницы, сайт на modx Revo)Кликаешь в выводе на любую страницу и переходишь на нее

189
Laravel & Webpack plugins

Laravel & Webpack plugins

Хочу использовать плагин webpack в laravel для обфускации JS (https://githubcom/javascript-obfuscator/webpack-obfuscator), но не могу настроить сам webpack

242
Как реализован вход в instagram?

Как реализован вход в instagram?

Заметил интересную вещь при авторизации в instagram, если один раз зашел в инстаграм через веб страницуТо на всех устройствах тебе предлагает...

149