Вариации функции main()
Существует несколько разновидностей функции main(). Первый вариант – это то, что предлагает нам Visual Studio по умолчанию. В скобках указываются параметры, которые передаются в программу, если соответствующий ей исполняемый exe-файл вызывается через командную строку. Аргумент argc – это число параметров, а массив argv[] – это список параметров.
int _tmain(int argc, _TCHAR* argv[]) {
…
return 0;
}
Стандартный вид функции main() следующий:
int main(int argc, _TCHAR* argv[]) {
…
return 0;
}
Для многих программ передаваемые параметры не требуются, поэтому их можно опустить:
int main() {
…
return 0;
}
Некоторые компиляторы, в частности, тот, который задан по умолчанию в Microsoft Visual Studio, поддерживают функцию main() без указания кода возврата:
void main() {
…
}
Данный способ удобен, поскольку здесь нет ничего лишнего, однако некоторые компиляторы, например, тот, который по умолчанию встроен в Code::Blocks, не поддерживают такой вид функции main().
При разработке программ из данного курса можно использовать любой из рассмотренных вариантов.
Переменные и типы данных
Любая компьютерная программа – это набор команд, оперирующих с переменными и производящих какие-то вычисления; даже слово «computer» (компьютер) переводится на русский язык как «вычислитель».
В математике мы сталкиваемся с переменными, значениями которых являются числа. Числа бывают натуральными, целыми, рациональными, вещественными, комплексными и т.д. Существуют также булевы (логические) переменные, которые могут принимать два значения: истина или ложь, хотя и этим значениям часто ставятся в соответствие числа 0 и 1. Таким образом, каждая переменная имеет свой тип, определяющий диапазон возможных значений этой переменной.
Переменные, с которыми работает компьютерная программа, также имеют свои типы. При разработке программ выбирать тип переменной следует, руководствуясь смыслом решаемой задачи. Например, переменная, предназначенная для хранения информации о количестве жителей города, должна иметь тип, соответствующий натуральным числам. Переменную, хранящую фамилию человека, разумно сделать строкой, а переменной, предназначенной для вычисления среднего веса членов футбольной команды, лучше всего задать вещественный тип.
Строго говоря, переменная – это именованный участок памяти, размер которого определяется типом этой переменной. Узнать размер типа можно при помощи функции sizeof(). Ниже будет рассмотрен пример ее использования, а сейчас перечислим основные типы данных языка Си.
Тип | Описание | Размер типа (байт) |
Диапазон значений | ||
char | Символ или целое число со знаком | |
-128..127 | ||
unsigned char | Символ или целое число без знака | |
0..255 | ||
short | Целое число со знаком | |
-32768..32767 | ||
unsigned short | Целое число без знака | |
0..65535 | ||
int | Целое число со знаком | |
-2147483647..2147483647 | ||
unsigned int | Целое число без знака | |
0..4294967295 | ||
float | Вещественное Число | |
6 знаков после запятой | ||
double | Вещественное Число | |
10 знаков после запятой | ||
bool | Логический Тип | |
true и false (0 и 1) | ||
void | Пустой тип | - |
- |
Перед работой с переменной ее необходимо объявить; объявление переменной – это указание ее имени и типа. Переменные могут быть объявлены по одной или сразу несколько, при этом указываются тип переменной и ее имя через пробел, а завершается объявление точкой с запятой. Если сразу объявляется несколько переменных, то они перечисляются через запятую:
int number, age, weight;
float length, width;
bool isEven;
char symbol;
Присвоение значения объявленной переменной – это занесение значения в выделенную под переменную ячейку памяти. Осуществляется присвоение при помощи оператора =. Указывается имя переменной и ее новое значение, а между ними ставится оператор присваивания:
number = 10;
length = 2.5;
isEven = true;
symbol = 'A';
Присвоить значение переменной также можно при ее объявлении, в этом случае говорят, что происходит инициализация переменной или переменная инициализируется:
int number = 10, x=7;
float length = 2.5;
bool isEven = true;
char symbol = '*', letter = 'A';
Имя переменной нужно выбирать так, чтобы оно отражало назначение этой переменной. Конечно, можно добавить комментарий:
//Возраст студента
int x;
однако предпочтительнее использовать следующее имя:
int student_age;
В таком случае комментарий вообще не понадобится.
Язык Си, как и большинство современных языков программирования, допускает объявление переменной в любом месте программы. В отличие, например, от языка Паскаль, в котором все переменные объявляются в специальном блоке под названием Var. Более того, существует рекомендация объявлять переменную максимально близко к тому месту, где она используется. Например, если переменная используется только внутри некоторой функции, то объявлять ее нужно внутри функции, а если переменная используется только внутри тела цикла, то объявлять ее нужно внутри тела цикла.