Не ключевое слово по сравнению с = Ложь при проверке на ложное булево условие

Прежде всего, приведенный выше код не является допустимым кодом C ++. Синтаксис, который вы используете для явной специализации шаблонов, неверен (и в конце вы пропускаете точку с запятой). Кроме того: std::min<0U,N> и std::max являются функциями, а не вызовами функций. Вы, вероятно, хотели написать:

template struct valid {static const unsigned value = 0; };
template<> struct valid<0U> {static const unsigned value = 1; };
template<> struct valid<99U> {static const unsigned value = 1; };

template struct validate
{
  static const unsigned value = valid< std::min(0U,N) >::value * 
                                valid< std::max(N,99U) >::value;
};

попробуйте здесь

9
задан Nathan W 29 October 2008 в 03:08
поделиться

7 ответов

Определенно, используйте "Нет". И для поочередно, используйте "Если (myboolean)" вместо "Если (myboolean = верный)"

Работы лучше всего, если Вы даете булевской переменной читаемое имя:

 if (node.HasChildren)
20
ответ дан 4 December 2019 в 06:57
поделиться

С тех пор нет никакого функционального различия ни между одним стилем, это - одна из тех вещей, которая просто сводится к персональному предпочтению.

Если Вы работаете над кодовой базой, где норма была уже установлена, то придерживается этого.

7
ответ дан 4 December 2019 в 06:57
поделиться

Определенно используйте "Не", рассмотрите чтение его вслух.

Если Вы читаете вслух:

Если X ложь, Затем Делают Y Делают Y

По сравнению с

Если не X затем делают Y

Я думаю, что Вы найдете "Не", направляют, является более естественным. Особенно, если Вы выбираете хорошие имена переменной или функции.

Завершенный код имеет некоторые хорошие правила об именах переменной. http://cc2e.com/Page.aspx?hid=225 (вход в систему, вероятно, требуется),

1
ответ дан 4 December 2019 в 06:57
поделиться

Использовать True и False установить переменные, не протестировать их. Это улучшает удобочитаемость, как описано в других ответах, но она также улучшает мобильность, особенно когда лучшие методы не применены.

Некоторые языки позволяют Вам чередоваться bool и целые типы. Рассмотрите изобретенный пример:

int differentInts(int i, int j)
{
   return i-j;  // Returns non-zero (true) if ints are different.
}

. . .
if (differentInts(4, 8) == TRUE)
   printf("Four and Eight are different!\n");
else
   printf("Four and Eight are equal!\n");

Ужасный стиль, но я видел худшего подхалима в производство. На часах других людей, конечно.:-)

2
ответ дан 4 December 2019 в 06:57
поделиться

! состояние

В C и предварительном STL C++, "! условие" означает, что условие оценивает к ложному значению истинности, тогда как "условие == ЛОЖЬ" означала, что значение условия должно было равняться тому, что система разработала как ЛОЖЬ. Так как различные реализации определили его по-разному, это считали лучшей практикой для использования!состояние.

ОБНОВЛЕНИЕ: Как указано в комментарии - ЛОЖЬ всегда 0, это - TRUE, который может быть опасным.

1
ответ дан 4 December 2019 в 06:57
поделиться

Дополнительно к согласию, когда будет и истинным случаем и ложным случаем, используйте

if (condition)
    // true case
else
    // false case

вместо

if (not condition)
    // false case
else
    // true case

(Но затем я никогда не уверен если Python x is not None истинный случай или ложный случай.)

1
ответ дан 4 December 2019 в 06:57
поделиться

Что-то еще: Опустите круглые скобки, они избыточны в VB и как таковы, составляют синтаксический мусор.

Кроме того, я немного побеспокоен тем, сколько людей спорит путем предоставления технических примеров на других языках, которые просто не применяются в VB. В VB, единственные причины использовать If Not x вместо If x = False удобочитаемость и логика. Не то, чтобы Вам были бы нужны другие причины.

Совершенно другие причины применяются в C (++), верный. Еще более верный из-за существования платформ, которые действительно обрабатывают это по-другому. Но вводя в заблуждение в контексте VB!

1
ответ дан 4 December 2019 в 06:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: