声明称为x = 5就足够了这样。你会想,我们是X的分配值5但究竟是什么?X是一个变量。
C++中的一个变量的一块内存可以用来存储信息的一个名字。你可以把一个变量作为一个邮箱,或一个舒适的地方,我们可以把和检索信息。所有的计算机内存,称为RAM(随机存取存储器),以供程序使用。当一个变量被声明,那一段记忆是预留的,可变的。
在本节中,我们只考虑整数变量。一个是整数,如1,2,3,1,12,或16。一个整型变量是一个变量,只能容纳一个整型值。
为了声明一个变量,我们通常使用的声明。这里的变量声明X为整数变量的一个例子(一个可以容纳整数值):
1
int x;
当这个语句被执行的CPU,RAM中的一块内存将被搁置。举例来说,假设变量x是分配的内存位置140。当程序把x的值在一个表达式或语句,它知道它应该在内存中的位置140。
一种最常见的操作变量赋值。要做到这一点,我们使用赋值操作符,通常被称为等于,俗称=符号。当CPU执行一个语句如x = 5;,把这“5值在内存中的位置140″。
后来在我们的节目,我们可以打印该值使用cout屏幕:
1
cout << x;/打印x的值(内存位置140)到控制台
在C++中,变量也被称为左值(明显的魔法值)。一个左值是一种价值,有一个地址(在内存中)。因为所有的变量都有地址,所有的变量是左值。他们最初命名为左值是因为他们是唯一可以在赋值语句的左边的值。当我们完成任务,的赋值运算符的左边必须是一个左值。因此,声明5 = 6;将导致一个编译错误,因为5不是一个左值。5值没有记忆,因此没有什么可以分配给它的。5,5,和它的价值不能被重新分配。当一个左值有分配给它的价值,当前值覆盖。
相反的左值右值。右值是指任何值,可以被分配给一个左值。右值总是求值并产生一个单一的价值。实例的右值是单数(如5,评估5),变量(如X,评估任何数量上分配给它的),或表达(如2+X,X + 2的评估上的价值)。
这里是一些赋值语句的一个例子,说明如何右值评价:
1
2
3
4
5
6
7
8
y;//声明y为整型变量
y=4;//4值为4,然后将其分配到Y
Y = 2 + 2 + 5 / 5;值为7,然后将其分配到Y
int x;//声明X为整数变量
X = Y;/ Y的值为7,然后将其分配到X
x = x;/ / x的值为7,然后将其分配到X(没用!)
x = x + 1;/ / x + 1的计算结果为8,然后将其分配到X
有注意到两个重要的东西。第一,是没有保证你的变量将被分配相同的内存地址,每一次你的程序运行。你第一次运行你的程序,X可能被分配到的内存位置140。第二次,它可能被分配到的内存位置168。第二,当一个变量被分配到一个存储位置,在内存位置的值是未定义的(换句话说,无论价值是去年依然存在)。
这可能会导致有趣的(和有趣的,我们的意思是危险的)结果。考虑以下的短节目:
1
2
3
4
5
6
7
8
9
10
11
/ / #包括“程序。H / /取消如果VisualStudio用户
#包含iostream > <
国际main()
{
使用std命名空间;/让我们触及到cout和endl
int x;//声明一个整数变量x
/ /打印x的值到屏幕(危险,因为X是未初始化的)
cout << x << endl;
}
在这种情况下,计算机会分配一些闲置的内存,它将把价值所在的内存位置的法庭,它将打印值。但什么样的价值将它打印吗?答案是“谁知道!“。你可以试着在你的编译器运行这个程序,看它的价值版画。给你举个例子,当我们运行这个程序与旧版本的Visual Studio编译,cout印制价值858993460。一些较新的编译器,如Visual Studio 2005表示会弹出一个调试错误消息,如果你在IDE中运行这个程序。
一个变量没有被分配一个值被称为未初始化的变量。未初始化的变量是非常危险的因为他们导致间歇性问题(由于