event.target - это узел, с которого произошло событие, т. е. везде, где вы размещаете прослушиватель событий (по абзацу или диапазону), event.target ссылается на узел (где пользователь нажал).
event.currentTarget, напротив, относится к узлу, на котором прослушиватель текущего события был прикреплен. То есть. если мы привязали наш прослушиватель событий к узлу абзаца, тогда event.currentTarget ссылается на абзац, а event.target все еще ссылается на span. Обратите внимание: если у нас также есть прослушиватель событий в теле, то для этого event-listener event.currentTarget относится к телу (т. Е. Событие, предоставляемое в качестве входных данных для событий-листеров, обновляется каждый раз, когда событие пузырится на один узел вверх).
Ваш printf не очищается, поэтому он не показывается, пока программа не закончится.
Вы не возвращаете значение из main () явно, поэтому возвращается результат scanf (), который 1, который интерпретируется как сбой программы.
Программа C без возвращаемого значения приведет к неопределенному поведению (которое единодушно считается Bad Thing ©). Компилятор разрешает свободу действий в том, что он возвращает здесь, он, кажется, возвращает результат scanf (), но он может возвращать некоторую атмосферную энтропию для всех забот C Standard.
Что касается строки, это потому, что вы используете printf () на буферизованном терминале, вам нужно добавить\n в конец. Причина этого сводится к древним Unix-способам, которые давно забыты всеми, кроме самого сагиста гуру Unix.
Что касается ничего не происходит, пока вы не вводите что-то, это потому, что scanf () блокирует до ввода если вы еще не знали об этом. Можно использовать неблокирующие вызовы ввода-вывода, но я не уверен, что это входит в сферу вашего вопроса. (пожалуйста, определите «сделайте это правильно»).
Добавить код возврата. main()
возвращает int, поэтому добавьте return 0;
в нижней части вашей функции main()
. Прямо сейчас, возвращаемое значение - это мусор, и обычно любое значение, отличное от 0, указывает на сбой.
Кроме того, вы можете подумать о том, чтобы сделать это:
int main(void)
больше явно (хотя ничего здесь ничего не изменит).
Вам нужно вернуть 0 в конце main, если не предполагается, что произошла ошибка.
Вы не возвращаете 0
, что указывает на успешное завершение работы ОС, и вы не ставите трейлинг \n
на свой printf
, заставляя строку не печатать (stdin буферизуется):
#include <stdio.h>
int main()
{
int n;
printf("Enter the number:\n");
scanf("%d", &n);
return 0;
}
Да, у меня с вами такая же проблема, и решения в ответах не работают на моей машине. После поиска я понимаю, что эта проблема связана с внутренней секцией / консолью Netbean. Внутренняя консоль не может запускать функцию scanf. Поэтому используйте внешний терминал для своего проекта. Для этого:
Вот и все.
return 0;
в main () и гарантировать, что оно все равно вернет 0, но вы не можете полагаться на это где-либо еще. – FatalError 2 February 2012 в 19:34