KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Брайан Керниган - Язык программирования Си. Издание 3-е, исправленное

Брайан Керниган - Язык программирования Си. Издание 3-е, исправленное

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Брайан Керниган, "Язык программирования Си. Издание 3-е, исправленное" бесплатно, без регистрации.
Перейти на страницу:

• Компиляторам более не разрешается трактовать математическую ассоциативность операторов как вычислительную ассоциативность.

• Введен унарный оператор + для симметрии с унарным -.

• Разрешено использовать указатель на функцию в качестве ее именующего выражения без явного оператора * (см. A7.3.2).

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

• Разрешено применять оператор получения адреса & к массиву; результатом является указатель на массив.

• В первой редакции результат операции sizeof имел тип int; во многих реализациях он заменен на unsigned. Стандарт официально объявляет его зависимым от реализации, но требует, чтобы он был определен в заголовочном файле <stddef.h> под именем size_t. Аналогичное изменение было сделано в отношении типа разности указателей) который теперь выступает под именем ptrdiff_t (см. A7.4.8 и A7.7).

• Запрещено применять оператор получения адреса & к объекту типа register даже тогда, когда данный компилятор не располагает его на регистре.

• Типом результата операции сдвига является тип ее левого операнда; тип правого операнда на повышение типа результата влияния не оказывает (см. A7.8).

• Стандарт разрешает адресоваться с помощью указателей на место, лежащее сразу за последним элементом массива, и позволяет оперировать с такими указателями, как с обычными, см. A7.7.

• Стандарт вводит (заимствованный из C++) способ записи прототипа функции с включением в него типов параметров и явного указания о возможности их изменения и формализует метод работы с переменным списком аргументов. (см. A7.3.2, A8.6.3, B7.) С некоторыми ограничениями доступен и старый способ записи.

• Стандартом запрещены пустые объявления, т. е. такие, в которых нет объявителей и не объявляется ни одной структуры, объединения или перечисления. Однако объявление с одним тегом структуры (или объединения) переобъявит ее даже в том случае, если она была объявлена во внешней области действия.

• Запрещены объявления внешних данных, не имеющие спецификаторов и квалификаторов (т. е. объявления с одним "голым" объявителем).

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

• Область видимости параметров "вставляется" в составную инструкцию, представляющую собой тело функции, так что объявления на верхнем уровне функции не могут их "затенить".

• Несколько изменены именные пространства идентификаторов. Всем тегам структур, объединений и перечислений стандарт выделяет одно именное пространство; для меток инструкций вводится отдельное именное пространство (см. A11.1). Кроме того, имена элементов связаны со структурой или объединением, частью которого они являются. (С некоторых пор это общепринятая практика.)

• Допускается инициализация объединения; инициализатор относится к первому элементу объединения.

• Разрешается инициализация автоматических структур, объединений и массивов, хотя и с некоторыми ограничениями.

• Разрешается инициализация массива символов с помощью строкового литерала по точному количеству указанных символов (без '').

• Управляющее выражение и case-метки в switch могут иметь любой целочисленный тип.

Предметный указатель

0... константа восьмеричная 2.3, A2.5.1

0x... константа шестнадцатеричная 2.3, A2.5.1

... многоточие 7.3, A7.3.2

>= оператор больше или равно 2.6, A7.9

> оператор больше чем 2.6, A7.9

- оператор вычитания 2.5, A7.7

-- оператор декремента 1.5.2, 2.8, 5.5, A7.3.4, A7.4.1

/ оператор деления 1.2, 2.5, A7.6

% оператор деления по модулю 2.5, A7.6

. оператор доступа к элементу структуры 6.1, A7.3, A7.3.3

-> оператор доступа к элементу структуры через указатель 6.2, A7.3, A7.3.3

, оператор запятая 3.5, A7.18

++ оператор инкремента 1.5.2, 2.8, 5.5, A7.4, A7.4.1

* оператор косвенного доступа 5.1, A7.4.3

&& оператор логического И 1.5.4, 2.6, 2.9, A7.14

|| оператор логического ИЛИ 1.5.4, 2.6, 2.9, A7.15

! оператор логического отрицания 2.6, A7.4, A7.4.7

<= оператор меньше или равно 2.6, A7.9

< оператор меньше чем 2.6, A7.9

!= оператор неравенства 1.5.1, 2.6, A7.10

& оператор побитового И 2.9, A7.11

| оператор побитового ИЛИ 2.9, A7.13

^ оператор побитового исключающего ИЛИ 2.9, A7.12

~ оператор побитового отрицания 2.9, A7.4.6

& оператор получения адреса 5.1, A7.4.2

# оператор препроцессора 4.11.2, A12.3

## оператор препроцессора 4.11.2, A12.3

= оператор присваивания 1.5.1, 2.6, A7.17

+= оператор присваивания 2.10

== оператор равенства 1.5.3, 2.6, A7.10

<< оператор сдвига влево 2.9, A7.8

>> оператор сдвига вправо 2.9, A7.8

+ оператор сложения 2.5, A7.7

* оператор умножения 2.5, A7.6

- оператор унарный минус A7.4.5

+ оператор унарный плюс A7.4.4

" символ двойная кавычка 1.1, 1.5.3, 2.3, A2.5.2, A2.6

' символ кавычка 1.5.3, 2.3, A2.5.2

символ нулевой 1.9, 2.3, A2.5.2

\ символ обратная наклонная черта 1.1, 2.3

_ символ подчеркивания 2.1, A2.3, B

?: условное выражение 2.11, A7.16

А

аргументы командной строки 5.10

Б

бесконечный цикл for( ; ; ) 3.5, 4.11.2

библиотечная функция 1.1, 4.1, 4.3, Приложение B

 abort B5

 abs B5

 acos B4

 asctime B10

 asin B4

 atan, atan2 7.8.6, B4

 atof B5

 atoi B5

 atol B5

 bsearch B5

 calloc 7.8.5, B5

 ceil B4

 clearerr B1.7

 clock B10

 cos 7.8.6, B4

 cosh B4

 ctime B10

 difftime B10

 div B5

 exit 7.6, B5

 exp 7.8.6, B4

 fabs 7.8.6, B4

 fclose 7.5, B1.1

 feof 7.6, B1.7

 ferror B1.7

 fflush B1.1

 fgetc B1.4

 fgetpos B1.6

 fgets 7.7, B1.4

 filecopy 7.6

 floor B4

 fmod B4

 fopen 7.5, B1.1

 fprintf 7.5, B1.2

 fputc B1.4

 fputs 7.7, B1.4

 fread B1.5

 free B5

 freopen B1.1

 frexp B4

 fscanf 7.5, B1.3

 fseek B1.6

 fsetpos B1.6

 ftell B1.6

 fwrite B1.5

 getc 7.5, B1.4

 getchar 1.5, 7.1, 7.5, B1.4

 getenv B5

 gets B1.4

 gmtime B10

 isalnum 7.8.2, B2

 isalpha 7.8.2, B2

 iscntrl B2

 isdigit 7.8.2, B2

 isgraph B2

 islower 7.8.2, B2

 isprint B2

 ispunct B2

 isspace 7.8.2, B2

 isupper 7.8.2, B2

 isxdigit B2

 labs B5

 ldexp B4

 ldiv B5

 localtime B10

 log, log10 7.8.6, B4

 longjmp B8

 malloc 6.5, 7.8.5, B5

 memchr B3

 memcmp B3

 memcpy B3

 memmove B3

 memset B3

 mktime B10

 modf B4

 perror B1.7

 pow 7.8.6, B4

 printf B1.2

 putc 7.5, B1.4

 putchar 1.5, 7.1, B1.4

 puts 7.7, B1.4

 qsort B5

 raise B9

 rand B5

 realloc B5

 remove B1.1

 rename B1.1

 rewind B1.6

 scanf 7.4, B1.3

 setbuf B1.1

 setjmp B8

 setvbuf B1.1

 signal B9

 sin 7.8.6, B4

 sinh B4

 sprintf 7.2, B1.2

 sqrt 7.8.6, B4

 srand B5

 sscanf B1.3

 strcat 7.8.1, B3

 strchr 7.8.1, B3

 strcmp 7.8.1, B3

 strcpy 7.8.1, B3

 strcspn B3

 strerror B3

 strftime B10

 strlen 7.8.1, B3

 strncat 7.8.1, B3

 strncmp 7.8.1, B3

 strncpy 7.8.1, B3

 strpbrk B3

 strrchr 7.8.1, B3

 strspn B3

 strstr B3

 strtod B5

 strtok B3

 strtol B5

 strtoul B5

 system B5

 tan B4

 tanh B4

 time B10

 tmpfile B1.1

 tmpnam B1.1

 tolower 7.8.2, B2

 toupper 7.8.2, B2

 ungetc 7.8.3, B1.4

 vfprintf 8.3, B1.2

 vprintf 8.3, B1.2

 vsprintf 8.3, B1.2

бинарное дерево 6.5

бинарный поток 7.5, B1

битовое поле

 выравнивание 6.9, A8.3

 объявление 6.9, A8.3

биты, образцы манипулирования 2.9, 6.9

блок см. также составная инструкция

 структура 3.1, 4.8, A9.3

 инициализация в. 4.9, A9.3

буферизация см. setbuf, setvbuf

буферизованный getchar 8.2

быстрая сортировка 4.10, 5.6

В

ввод

 без буферизации 8.2

 возврат символа на 4.3

 с буферизацией 8.2

 с клавиатуры 1.1, 7.1, 8.1

 форматный см. scanf

ввод-вывод

 символов 1.5, 7.1

 ошибки 7.6, B1.7

 перенаправление 7.1, 7.5, 8.1

 с терминала 1.5

високосный год, вычисление 2.5, 5.7

вывод на экран 1.5, 7.1, 7.5, 8.1

 перенаправление 7.1

 форматный см. printf

вызов

 по значению 1.8, 5.2, A7.3.2

 по указателю 1.8, 5.3

выравнивание битового поля

 с помощью union 8.7

 ограничения по 6.4, 6.5, 6.8, 7.8.5, 8.7, A6.6

выражение A7

 в скобках A7.2

 константное 2.3, 3.4, 4.11.3, A7.19

 логическое, численное значение 2.7

 очередность вычисления 2.12, A7

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*