Добавил:
Studfiles2 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на C / C++ / Основы программирования на Си

.doc
Скачиваний:
5
Добавлен:
02.05.2014
Размер:
1.3 Mб
Скачать

133

Основы программирования на языке Си.

Содержание.

1. Лекция: Общее знакомство.

-Происхождение языка Си.

-Достоинства языка Си.

-Будущее языка Си.

-Использование языка Си.

-Использование текстового редактора для подготовки программ.

-Исходные и выполняемые файлы. Примеры простой программы.

-Пример простой программы на языке Си.

-Структура простой программы.

2. Лекция: Данные, символьные строки, директива #define

-Основные типы данных.

-Описание различных типов, переменные и константы.

-Символьные строки.

-Препроцессор языка Си.

3. Лекция: Операции.

-Основные операции.

-Дополнительные операции.

-Перечень операций языка Си.

4. Лекция: Операторы.

-Выражения.

-Простейшие выражения.

-Операторы.

-Составные операторы.

5. Лекция: Преобразование типов.

-Эквивалентность типов.

-Преобразование типов.

-Неявное преобразование типа.

-Арифметические преобразования.

-Явное преобразование типов.

-Синтаксис типов.

6. Лекция: Функции и переключение ввода-вывода.

-Ввод и вывод одного символа.

-Буферы.

-Чтение одной строки.

-Чтение файла.

-Переключение и работа с файлами.

7. Лекция: Выбор вариантов.

-Выбор вариантов.

-Оператор if.

-Расширение оператора if.

-Операции отношения.

-Логические операции.

-Операция условия: ?:.

-Множественный выбор.

8. Лекция: Циклы и другие управляющие средства. Структурное программирование.

-Цикл с предусловием.

-Цикл со счетчиком.

-Цикл с постусловием.

-Другие управляющие операторы.

-Структурное программирование.

9. Лекция: Функции.

-Создание и использование функций.

-Аргументы функции.

-Возвращение значений.

-Локальные переменные.

-Нахождение адресов.

-Указатели, первое знакомство.

-Функции с переменным количеством аргументов.

10. Лекция: Классы памяти и разработка программ.

-Классы памяти и область действия.

-Автоматические переменные.

-Внешние переменные.

-Статические переменные.

-Внешние статические переменные.

-Регистровые переменные.

11. Лекция: Препроцессор языка Си.

-Общие сведения.

-Символические константы: #define.

-Использование аргументов с #define.

-Макроопределение или функция?

-Включение файла #include.

-Условная компиляция.

12. Лекция: Массивы и указатели.

-Указатели и массивы.

-Массивы.

-Указатели.

-Динамические объекты.

-Создание динамических объектов.

-Доступ к динамическим объектам.

-Строки - дополнительные сведения о связи между указателями и массивами.

-Инициализация массивов и классы памяти.

-Функции.

-Операции с указателями.

13. Лекция: Символьные строки и функции над ними.

-Строковые константы.

-Массивы символьных строк и их инициализация.

-Массив и указатель: различия.

-Указатели и строки.

-Ввод-вывод строк.

-Обработка строк.

14. Лекция: Структуры.

-Определение структурных переменных.

-Доступ к компонентам структуры.

-Поля битов в структурах.

-Объединения.

-Перечисления.

­­-Переменные структуры.

-Указатели структуры.

-Массив структур.

-Переименования типов.

15. Лекция: Библиотека языка Си и файлы ввода-вывода.

-Библиотека языка Си содержит множество функций и макроопределений.

-Библиотеки меняются от системы к системе, но есть ядро функций (стандартная библиотека).

-Распределение памяти.

16. Лекция: Функции в примерах.

-Функция получения случайных чисел.

-Поиск узлов из простых чисел.

-Матрица инцидентности.

-Структуры данных.

-Работа с файлами.

-Все операции со стеком.

-Примеры из графики, все преобразования трехмерного пространства.

1. Лекция: Общее знакомство.

-Происхождение языка Си.

-Достоинства языка Си.

-Будущее языка Си.

-Использование языка Си.

-Использование текстового редактора для подготовки программ.

-Исходные и выполняемые файлы. Примеры простой программы.

-Пример простой программы на языке Си.

-Структура простой программы.

Происхождение языка Си.

Язык программирования Си был разработан и реализован в 1972 году сотрудником фирмы AT&T Bell Laboratories Денисом Ритчи. Прообразом языка Си для Д. Ритчи послужил язык Би, разработанный Кеном Томпсоном. Он является результатом эволюционного развития языков BCPL (Richards, M., "BCPL: A. Tool for Compiler Writing and System Programming", Proc. AFIPS SJCC, 34, 557-566, 1969) и Би (Johnson, S. C., and B. W. Kernighan, "The Programming Language B", Comp. Sci. Tech. Rep. No. 8, Bell Laboratories. 1973). Основным достоинством языка Си по сравнению с языками BCPL и Би является введение в него типов данных. Язык Си был разработан во время создания операционной системы UNIX (OC UNIX). Развитие языка Си продолжалось и после окончания его разработки и касалось, в частности, проверки типов данных и средств, облегчающих перенос программ в другую среду. Например, разработка проекта переноса OC UNIX на компьютер Interdata 8/32 привела к некоторым добавлениям в язык Си, а именно, к включению в язык таких средств, как объединение (union). Позднее были сделаны попытки включения в язык Си средств абстрагирования данных. В настоящее время рассматривается проект стандарта ANSI C - стандарт языка Си Американского национального института и the C Programming Language - Reference Manual, AT&T Bell Laboratories. С языка Си разработаны совместимые по входному языку трансляторы для 40 типов вычислительных систем, начиная от 8-разрядных микропроцессоров и кончая CRAY-1 - одним из самых мощных в настоящее время суперкомпьютеров. В ходе работ по созданию Мобильного Транслятора с языка Си сам он был переработан для повышения мобильности написанных на нем программ.

Достоинства языка Си.

Особое значение придается гибкости. Язык Си компактен, является относительно маленьким языком программирования. Ввод-вывод не считается частью языка Си, а определяется стандартной библиотекой. Вседозволенность в языке Си является следствием желания как можно больше расширить область его применения. Язык Си удалось сделать относительно маленьким языком программирования за счет того, что в его состав не были включены ввод-вывод и средства для работы со строками. Язык Си был задуман настолько гибким, что эти возможности могли быть реализованы в каждом конкретном случае наиболее удачным образом. Практический опыт использования языка Си показал правильность такого подхода. Большая часть операционной системы UNIX и все утилиты этой операционной системы, включая и несколько трансляторов с языка Паскаль, реализованы на языке Си. Язык программирования является языком программирования с сильной типизацией, если:

  • каждый объект в этом языке программирования принадлежит точно одному из существующих в этом языке программирования типу данных;

  • преобразование типов осуществляется только путем преобразования значения из одного типа в другой;

  • преобразование типов не производится путем трактовки представления значения как данных различных типов.

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

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

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

Си - эффективный язык. Его структура позволяет наилучшим образом использовать возможности современных ЭВМ. Написанные на языке Си программы обычно отличаются компактностью и быстротой исполнения.

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

Си - мощный и гибкий язык. Например, большая часть мощной и гибкой OC UNIX написана на языке Си. Речь идет о компиляторах и интерпретаторах других языков, таких, как Фортран, АПЛ, Паскаль, Лисп, Лого и Бейсик. Кроме того, программы, написанные на Си, используются для решения физических и технических проблем, компьютерной графики и даже производства мультипликационных фильмов.

Си - обладает рядом конструкций управления, обычно ассоциируемых с ассемблерами.

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

Будущее языка Си.

Многие фирмы, производящие программное обеспечение, все чаще обращаются к Си как к удобному языку для реализации своих проектов, поскольку известно, что Си позволяет получить компактные и эффективные программы. И эти программы могут быть легкомодифицированы и адаптированы кновым моделямЭВМ! Языки программирования как С++, Java, С#, UML и т.д. имеют "сишную" семантику. Си используется фирмами, производящими программное обеспечение, студентами, обучающимися программированию. И если вы хотите работать в сфере программотехники, то один из первых вопросов, на который вы должны будете отвечать "Да" - это вопрос "Умеете ли Вы программировать на Си?"

Использование языка Си.

Си - язык компилируемого типа. Пример языков компилируемого типа: Паскаль, Фортран. Пример языков интерпретируемого типа: Бейсик, Лого. Чтобы дать первое представление о процессе создания программы, приведем упрощенную схему того, что необходимо сделать - начиная от написания программы и заканчивая ее выполнением.

  1. Для создания программы на языке Си используйте редактор текстов.

  2. Попробуйте оттранслировать вашу программу с помощью удобного для вас компилятора. Компилятор проведет проверку правильности вашей программы. Если компилятор обнаружит ошибки в вашей программе, он выдаст сообщение об этом. Если ошибок не будет, компилятор выполнит перевод программы на внутренний язык ЭВМ, и поместит результат в новый файл.

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

В некоторых вычислительных системах второй этап может быть разбит на два или три шага.

Использование текстового редактора для подготовки программ.

У Си нет собственного текстового редактора. В качестве него можно использовать любой из редакторов общего типа. В операционной системе UNIX это чаще всего редакторы ed,ex,edit,emacs,vi. На персональном компьютере это может бытьed,edlin,Wordstar,Volkswriterили любой другой из большого набора редакторов. При работе с некоторыми из них необходимо определить конкретную версию редактора путем задания соответствующих параметров. Например, при использовании редактораWordstarнеобходимо ввести параметр N, указывающий на отсутствие документирования.

При работе с редактором лучше не ошибаться, набирая текст программы на пульте дисплея, и правильно задать имя файла, в который она будет помещена. Имя файла должно быть допустимым именем в вашей вычислительной системе и иметь расширение .c.

Например,

sort.c

Sort.c

Первая часть имени должна напоминать, что программа делает или хотя бы того, кто разработал алгоритм, который в ней реализован. Вторая часть, так называемое расширение файла .с указывает на то, что данный файл содержит текст программы, написанный на языке Си. Расширение файла используется для того, чтобы информировать пользователя и вычислительную систему о типе файла. Предположим, что при помощи редактора мы подготовили программу и поместили ее в файл с именем Nina.c. Текст, который мы набрали на клавиатуре, называется исходным кодоми содержится в исходном файле.Исходный файл- это начальный пункт процесса программирования.

Исходные и выполняемые файлы

Приведем простенькую программу на языке Си:

#include <stdio.h>

main( )

{

printf("Добро пожаловать!\n");

}

Все конструкции языка мы рассмотрим в последующих лекциях. Если эту программу оттранслировать, то получим файл с выполняемой программой. В результате работы этой программы на дисплей будет выведено предложение: "Добро пожаловать!". Наша программа, несмотря на свою лаконичность и простоту, для компьютера является совершенно бессмысленным набором символов, так как он не понимает директив #include или printf. Компьютер понимает только специальный язык, называемый машинным кодом, т.е. набор последовательностей двоичных цифр, например 101000101. Если мы хотим, чтобы компьютер выполнил программу, мы должны осуществить перевод (трансляцию) кода, написанного на Си (исходного) в ее код (машинный). В результате этих действий будет получен выполняемый файл. Процесс перевода (трансляции) удалось переложить на сам компьютер. Программы, переводящие исходный код в машинный код, называютсякомпиляторами. Детали процесса перевода зависят от особенностей конкретной системы. В некоторых компиляторах с языка Си, работающих на персональных ЭВМ, реализован альтернативный способ трансляции. В процессе перевода получается файл с расширением .obj, затем используется системный компоновщик для получения файла с выполняемой программой, т.е. файла с расширением .exe. Почему компиляция, а не интерпретация? Дело в том, что после компиляции получается более эффективный конечный продукт, чем при интерпретации.

Пример простой программы на языке Си

Рассмотрим простую программу на языке Си:

#include <stdio.h>

main( )/*простая программа*/

{

int courses;

courses=30;

printf("Сколько учебных курсов на сайте");

printf(" www.intuit.ru?\n");

printf("Более %d. Но будет еще больше!\n",

courses);

}

Давайте, выполним эту программу. Сначала используем текстовый редактор для создания файла, содержащего текст программы. Этому файлу нужно присвоить какое-то имя. Допустим - intuit.c. Выполним компиляцию программы. После запуска программы, при условии отсутствия синтаксических ошибок, результат должен выглядеть следующим образом:

Сколько учебных курсов на сайте www.intuit.ru?

Более 30. Но будет еще больше!

Пояснения к программе

Мы выполним два просмотра текста программы: во время первого просмотра объясним смысл каждой строки, а во время второго - рассмотрим детали.

Первый просмотр

#include <stdio.h>- включение другогофайла.

Эта строка указывает компилятору, что нужно включить информацию, содержащуюся в файле stdio.h.

main( )- имя функции

Любая программа, написанная на языке Си, состоит из одной или более функций, являющихся основными модулями, из которых она собирается. Наша программа состоит из одной функции main( ), а круглые скобки указывают именно на то, чтоmain( )- имя функции.

/* простая программа*/–комментарий

/*,*/- открывающая и закрывающая скобки многострокового комментария.

Комментарии- это примечания, помогающие понять смысл программы. Они предназначены для читателя, и игнорируются компилятором.

{ – начало телафункции

Открывающая фигурная скобка отмечает начало последовательности операторов - тело, или определение, функции. Конец определения отмечается закрывающей фигурной скобкой – }.

int courses;–оператор описания.

С помощью такого оператора мы объявляем, что будем использовать в программе переменную courses, которая принимает целые (int) значения.

courses = 30;–оператор присваивания

Этот оператор служит для присваивания переменной courses значения 30.

printf("Сколько учебных курсов на сайте");–оператор вывода на печать

С его помощью выводится на печать фраза, заключенная в кавычки:

Сколько учебных курсов на сайте

printf(" www.intuit.ru?\n");– еще один оператор вывода на печать. Этот оператор добавляет словаwww.intuit.ru?в конец последней печатаемой фразы. Комбинация символов\nуказывает компилятору наначало новой строки.

printf("Более %d. Но будет еще больше!\n",courses); – этот оператор выводит на печать значение переменнойcourses, равное30, содержащееся в кавычках. Символы%dуказывают компилятору, где и в какой форме печатать значение переменнойcourses.

} - конец

Программа завершается закрывающей фигурной скобкой.

Второй просмотр

#include <stdio.h>

Файл с именем stdio.hявляется частью пакета, имеющегося в любом компиляторе языка Си и содержащего информацию о вводе-выводе. В качестве имени файла используется аббревиатура английских слов:

standard input/output header - заголовок стандартного ввода-вывода.

Программисты называют набор данных, содержащийся в начале файла, заголовком.

Строка "#include <stdio.h>" даже не является оператором языка Си. Символ#указывает, что она должна бытьобработана "препроцессором" языка Си. Препроцессор осуществляет некоторую предварительную обработку текста программы перед началом компиляции.

main( )

Программа, написанная на языке Си, всегда начинает выполняться с функции, называемой main( ). Скобки указывают на то, чтоmain( )-имя функции.

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

Файл, содержащий программу, может иметь любое имя с тем ограничением, что оно должно удовлетворять системным соглашениям, и оканчиваться символом с. Например,game.c.

/* простая программа*/

Комментарии облегчают процесс понимания программы. Длинный комментарий может помещаться на отдельной строке или даже занимать несколько строк. Все, что находится между символом, указывающим на начало комментария /*, и символом, указывающим на его конец */, игнорируется компилятором.

{,}

Фигурные скобки { }отмечаютначалоиконец тела функции.

int courses;

Это оператор описания переменной. В нашей программе в теле функции используется переменная courses, и с помощью словаintобъявляется, что переменнаяcoursesпринимаетцелые значения.Точка с запятойв конце строки указывает на то, что в ней содержится оператор языка Си, причем этот символявляется частью оператора, а не разделителем операторов.intслужит ключевым словом, определяющим один из основных типов данных языка Си.

Ключевыми словаминазываются специальные зарезервированные слова, используемые для построения фраз языка.

В языке Си все переменные должны быть объявлены. Это означает, что мы должны привести список всех используемых переменных и указать тип каждой из них.

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

Идентификатор переменной - имя переменной. Для обозначения имени переменной разрешается использовать строчные и прописные буквы, цифры и символ подчеркивания, считающийся буквой. Первым символом должна быть обязательно буква.

Например, courses,cat_1,_total- правильные идентификаторы, а$courses*,1cat,-total- неправильные.

Переменные можно описывать по мере необходимости, но лучше размещать операторы объявления переменных в начале программы. Любая программа, написанная на языке Си, не будет выполняться, если

не описать все используемые переменные.

courses=30;

Оператор присваивания является одним из основных средств языка. Приведенную строку программы можно интерпретировать так: присвоить переменной coursesзначение30. При описании переменнойcoursesбыла выделена ячейка памяти, и только теперь в результате выполнения оператора присваивания переменная получает свое значение. При желании мы могли бы присвоить ей другое значение, поэтому имяcoursesи обозначает переменную.

В данной программе используется стандартная функция языка Си - printf( ). Строка символов, заключенная в скобки, является информацией, передаваемой функцииprintf( )из главной функцииmain( ). Такая информация называется аргументом. В первом случае аргументом является "Сколько учебных курсов на сайте". Данная строка дает пример того, как вызывать функцию или обратиться к ней, программируя на языке Си. Для этого требуется только указать имя функции и заключить требуемый аргумент, или аргументы, в скобки. Когда при выполнении функции программа достигнет этой строки, управление будет передано указанной функции. Когда выполнение функции будет завершено, управление вернется обратно в исходную, вызывающую программу.

Символы \n служат директивой начать новую строку на устройстве вывода. Комбинация \nпредставляет один символ, называемый"новая строка". Его смысл формулируется так: начать вывод новой строки с самой левой колонки. Символ "новая строка" служит одним из примеров того, что называется "управляющей последовательностью". Управляющая последовательность начинается с "\".

Структура простой программы

Познакомимся с несколькими общими правилами, касающимися программ, написанных на языке Си. Программа состоит из одной или более функций, причем какая-нибудь из них (главная) обязательно должна называться main( ). Описание функции состоит из заголовка и тела. Заголовок состоит из директив препроцессора типа#includeи имени функции. Отличительным признаком имени функции служат круглые скобки, а аргумент может и отсутствовать. Тело функции заключено в фигурные скобки и представляет собой набор операторов, каждый из которых оканчивается символом "точка с запятой".

Дополнительный пример.

Здесь мы приведем еще пример. Мы использовали только стандартную функцию printf( ). В данном примере мы демонстрируем, как включить и использовать функцию, которую мы сами написали:

dir( )/* dir*/

{

printf("На сайте проекта www.intuit.ru \n");

printf(" большое количество учебных курсов\n");

}

main ( )

{

dir ( );

printf("Над их созданием работают \n");

printf(" профессора российских вузов.\n");

}

Результат работы программы выглядит следующим образом:

На сайте проекта www.intuit.ru

большое количество учебных курсов

Над их созданием работают

профессора российских вузов.

Функция dir( )определяется точно так же, как и функцияmain( )- ее тело заключено в фигурные скобки. Вызов функции осуществляется путем простого указания ее имени, включая круглые скобки.

2. Лекция: Данные, символьные строки, директива #define.

-Основные типы данных.

-Описание различных типов, переменные и константы.

-Символьные строки.

-Препроцессор языка Си.

Основные типы данных

Чтобы реализовать алгоритм, программам необходимо работать с данными - числами, символами, т.е. объектами, которые несут в себе информацию, предназначенную для использования. Некоторые данные устанавливаются равными определенным значениям еще до того, как программа начинает выполняться, а после ее запуска такие значения сохраняются неизменными на всем протяжении работы программ. Эти данные называются константами. Данные, которые могут изменяться, или же им могут быть присвоены значения во время выполнения программы, называются переменными. Различие между переменной и константой очевидно: во время выполнения программы значение переменной может быть изменено (например, с помощью присваивания), а значение константы изменить нельзя.

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

int

long

short

unsigned

char

float

double

Первые четыре ключевых слова используются для представления целых, т.е. целых чисел без десятичной, дробной части. Если мы хотим подчеркнуть, чтоцелое не может быть отрицательным, то нужно к целому подписывать ключевое словоunsigned, например,unsigned short.charпредназначено для указания набуквы и другие символы.float,doubleиспользуются для представлениячисел с десятичной точкой. Типы, обозначаемые этими ключевыми словами, можно разделить на два класса по принципу размещения в памяти машины. Первые пять ключевых слов определяют целые типы данных, последние два - типы данных с плавающей точкой. Дадим краткое объяснение их смысла. Термины бит, байт, слово используются для описания как элементов данных, которые обрабатывает компьютер, так и элементов памяти. Рассмотрим эти понятия относительно памяти. Наименьшая единица памяти называется бит. Она может принимать одно из двух значений: 0 или 1. Байт в большинстве машин состоит из 8 бит. Всего в байтовом формате можно представить 256 (два в восьмой степени) различных комбинаций из нулей и единиц. Эти комбинации можно использовать для представления целых чисел в диапазоне от 0 до 255 или для кодирования набора символов. Слово является естественным элементом памяти. Есть ЭВМ, у которых слово равно 8 битам, 16 битам, 32 битам или 64 битам.

Описание различных типов, переменные и константы

Целые числа.

У целого числа никогда не бывает дробной части. Представив целое число в двоичном виде, его нетрудно разместить в машине. Например, число 3 в двоичном виде выглядит как 11. Если его поместить в слово 32-разрядной машины, необходимо первые 30 бит установить в 0, а последние 2 бита - в 1.

Числа с плавающей точкой.

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

Все данные типов int,short,longявляются числами со знаками, т.е. значениями этих типов могут быть только целые числа - положительные, отрицательные и нуль.Один битиспользуетсядля указания знака числа, поэтому максимальное число со знаком, которое можно представить в слове, меньше, чем максимальное число без знака.

Описание данных целого типа.

При описании данных необходимо написать только тип, за которым должен следовать список имен переменных. Например, int dog, rad, nina.В качестве разделителя между именами переменных необходимо использовать запятую.

Целые константы.

Согласно правилам языка Си, число без десятичной точки и без показателя степени рассматривается как целое. Поэтому компилятор по записи константы определяет, целая она или вещественная. Если нужно ввести константу типа long, то нужно указать признакLилиlв конце числа. Если при записи константы целое начинается с цифры0, то эта константа интерпретируется как восьмеричное число, если же целое начинается с символа0xили0X- как шестнадцатеричное число.

Соседние файлы в папке C++