2013-08-22 4 views
-2

Что означает, что команды printf и scanf являются частью языка C, так как они не нуждаются в включении #include<stdio.h>.О printf и scanf

Почему другие не являются частью языка C?

+4

Я не совсем понимаю ваш вопрос. Вам нужно включить 'stdio.h' для использования' printf' и 'scanf' (или, по крайней мере, предоставить надлежащие прототипы, но это не будет предпочтительным способом). И да, они являются частью стандарта языка C. – Mat

+1

Вопрос до редактирования был о '(print f)' и '(scan f)' ... возможно, это на самом деле вопрос [lisp]. –

ответ

4

Что такое среднее, что (печать е) и команды (скан е) являются частью языка Си

Они не являются «команды», а скорее функции, и они Арен Это тоже часть языка.

им не нужно включить #include

Они делают. Им нужны заголовки/объявления даже больше, чем другие,, так как они являются переменными. Не предоставление прототипа для них быстро приведет к неопределенному поведению.

почему другие не является частью языка C

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

0

printf() and scanf() Example programs

В неспециалиста языке

printf() является использование функции для отображения (выход)

scanf() является функцией, которая используется для чтения ввода

+0

'scanf' не выделяет пространство, аргументы должны быть указателями на выделенное пространство –

4

На самом деле, нет, они не являются частью языка так, как вы думаете. Если вы вызываете print("hello, %d", 5);, он создаст неявное объявление на основе параметров, которые вы предоставили, и возвращаемый тип будет int.

К счастью, для этого есть libc, который неявно связан с вашей программой, и линкер сможет связать исходный файл и определение библиотеки printf.

+0

Ваше последнее предложение, скорее всего, устраняет его сомнения. –

0

В некотором IDE, вполне возможно, что printf & scanf используется и не подчеркнут как ложным, а editig исходного кода, из-индексатора, который знает эти функции существует. Но вы не сможете его скомпилировать. Включение не является обязательным, поскольку сам компилятор не знает printf или scanf.

0

printf и scanf не являются частью грамматики, но они являются частью языка в силу того, в стандартной библиотеке, как указано в определении языка.Вам do необходимо включить stdio.h, чтобы использовать их правильно.