Является ПУСТЫМ то же как Ложь в C++

В C++ (gcc, VS) NULL, которую рассматривают тем же как Ложь. Или что еще более важно если в логическом операторе, к чему оценивает ПУСТОЙ УКАЗАТЕЛЬ. Было много других вопросов, но ни один для C++ конкретно.

По некоторым причинам цикличное выполнение с ПУСТЫМ управлением для (; ;) просто замерзает программа, указывающая, что существует что-то другое, чем ПУСТОЙ УКАЗАТЕЛЬ, помещенный между;;. обратите внимание, что этот код - что-то, чему наш преподаватель верит для содержания Нулевых значений.

6
задан Roo 13 January 2010 в 15:49
поделиться

4 ответа

  • простота - простота выполнения простых вещей
  • повсеместность - некоторая версия в вашей системе
  • скорость - достаточно быстрая для большинства вещей
  • экспрессивность - довольно хорошее соответствие с задачей
  • неочевидная сложность - в основном крупные проекты обнажают проблемы
-121--3064105-
$("document").ready({
    $("ul.galleria li:first-child img").click(function(){alert('i work click triggered'});
}); 

$("document").ready(function() { 
    $("ul.galleria li:first-child img").trigger('click'); 
}); 

просто убедитесь, что обработчик щелчка добавлен до события триггера в последовательности стека вызовов.

  $("document").ready(function() { 
        $("ul.galleria li:first-child img").trigger('click'); 
    }); 

   $("document").ready({
        $("ul.galleria li:first-child img").click(function(){alert('i fail click triggered'});
    }); 
-121--1097430-

Кажется, что вы рассматриваете следующий код:

for (;;) { }

Это будет закольцовываться навсегда, потому что условие является пустым. У вас может возникнуть соблазн сослаться на это как на нулевое условие , указывающее на то, что условия отсутствуют, но как вы и все остальные, кто прочитал ваш вопрос, можете подтвердить, что это запутанная фраза, потому что это не означает то же самое, что и это:

for ( ; NULL; ) { }

Выше не будет закольцовываться вообще. Он использует макрос NULL , который эквивалентен целочисленной константе ноль, и ноль в логическом контексте обрабатывается как ложь. Это не «нулевое условие», потому что там является условием - условием, которое всегда ложно.

Если вы получили это от вашего профессора, и он преподает класс на C++, то я подозреваю, что вы неправильно поняли его, потому что я бы не ожидал, что профессор ошибется, так что попросите его заполнить дыру в ваших заметках. Если он не профессор C++, то, возможно, он просто попытался использовать пример C++, чтобы проиллюстрировать какую-то другую тему. Вы можете отправить ему записку об этом, чтобы он мог уточнить и представить какой-то другой пример в будущих лекциях.

2
ответ дан 8 December 2019 в 02:35
поделиться

Я считаю, что нуль обычно определяется как 0, который совпадает с ложью при использовании в качестве логического выражения.

27
ответ дан 8 December 2019 в 02:35
поделиться

NULL на gcc на некоторых платформах (Mac) намного сложнее. Он пытается начать использовать штуковину nullptr со следующего cxx rev. Тем не менее, он все равно должен вычислить ложь в булевом контексте

.
0
ответ дан 8 December 2019 в 02:35
поделиться

В C++, NULL имеет значение #определенное до 0 (и, таким образом, вычисляется как ложное срабатывание). В языке Си это void*, который также вычисляется как false, но его тип не является числовым. В стандартной библиотеке (по крайней мере на GCC):

#ifndef __cplusplus
#define NULL ((void *)0)
#else   /* C++ */
#define NULL 0
#endif  /* C++ */
6
ответ дан 8 December 2019 в 02:35
поделиться
Другие вопросы по тегам:

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