При определении переменной указывается её тип. При определении можно сразу задать начальное значение (инициализация), задать несколько переменных в одной строке или просто объявить (без инициализации):
int i = 10;
short j = 20;
bool b = false;
unsigned long l = 123123;
double x = 13.5 , y = 3.1415;
float z;
В языке C++ есть две похожие концепции, которые новички часто путают: присваивание и инициализация. После объявления переменной, ей можно присвоить значение с помощью оператора присваивания (знак равенства =):
int a; // это объявление переменной
a = 8; // а это присваивание переменной a значения 8
В языке C++ вы можете объявить переменную и присвоить ей значение одновременно. Это называется инициализацией (или «определением»).
int a = 8; // инициализируем переменную a значением 8
Переменная может быть инициализирована только после операции объявления. Хотя эти два понятия близки по своей сути и часто могут использоваться для достижения одних и тех же целей, все же в некоторых случаях следует использовать инициализацию, вместо присваивания, а в некоторых — присваивание вместо инициализации.
Правило: Если у вас изначально имеется значение для переменной, то используйте инициализацию, вместо присваивания.
В отличие от других языков программирования, языки Cи и C++ не инициализируют переменные определенными значениями (например, нулем) по умолчанию. Поэтому, при создании переменной, ей присваивается ячейка в памяти, в которой уже может (но не обязательно, зависит от компилятора) находиться какой-нибудь мусор! Переменная без значения (со стороны программиста или пользователя) называется неинициализированной переменной.
#include <iostream>
using namespace std;
int main()
{
int a;
cout << a;
return 0;
}
Использование неинициализированных переменных является одной из самых распространенных ошибок. Хорошей практикой считается всегда инициализировать свои переменные. Это будет гарантией того, что ваша переменная всегда имеет определенное значение и вы не получите ошибку от компилятора.
Правило: Убедитесь, что все ваши переменные в программе имеют значения (либо через инициализацию, либо через операцию присваивания).
Над переменными можно проводить операции:
Ниже приведена программа для ознакомления, иллюстрирующая данные операции:
#include <iostream>
using namespace std;
int main()
{
int i = 10;
i = (20 * 3) % 7; // остаток от деления 60 на 7 есть 4
cout << "i is " << i << endl;
/* "постфиксная" версия унарного оператора -
в начале будет присвоено значение 4 в k, а затем i увеличится на 1 и станет 5*/
int k = i++;
cout << "k is " << k << endl;
/* "префиксная" версия унарного оператора -
в начале будет уменьшино значение i на единицу до 4,
потом это значение (4) будет присвоено значение в l*/
int l = --i;
cout << "l is " << l << endl;
// k равен l, что вернет true, но инверсия превразает в false (0)
bool b = !(k == l);
cout << "b initialized as " << b << endl;
double a = 0.1;
/* переприсваивание b.
В выражении дизъюнкция, потому компилатор не будет выполнять другие выражения с права,
если слева встретилось выражение дающее true.
В данном случае ни первое выражение, ни ни второе не дают true
*/
b = (a == 0) || (1 / a < 1);
cout << "b still " << b << endl;
double d = 3.1415;
// идет приведение к целочисленному и записью целового значение в float
float f = (int) d;
cout << "float contains " << f << endl;
d *= i + k ; // аналогично d = d * (i + k) = 3.1415 * 8
cout << "d should equal to " << d << endl;
return 0;
}