Я обсуждаю эту тему с коллегой около недели. Я очень поклонником сокращенного кода, с помощью троичников и т.д., где я могу. В последнее время он спрашивал меня об использовании двойных возгласов. Проведя многочисленные тесты, я начинаю с ним соглашаться... двойные возгласы может быть не разумно использовать в моем коде. Рассмотрим следующее:
var myvar = "Hello";
return (!!myvar ? "Var is set" : "Var is not set");
Приведенный выше пример работает так, как ожидалось. Однако если мы проверяем переменную, которая может возвращать неопределенное значение, мы получаем ошибку, особенно в IE7. Мы получаем наш ожидаемый результат, однако, если мы запускаем это в нашей консоли:
if(randomvar) alert('Works');
С помощью этого подхода, если переменная не определена, она безмолвно терпит неудачу. Это заставляет меня усомниться в использовании двойных возгласов вообще. Существует ли ситуация, которая на самом деле делает этот оператор полезным?
-121--1555572-std::cout << (DWORD)"test";
Если я компилирую и выполняю это, я получаю разные выходные значения каждый раз, но я не могу понять, почему.
Какие-либо идеи?
PS: Я использую 64-разрядную Windows 7 и компилирую с Microsoft Visual C++ 2010 Ultimate.