我正在尝试通过C++ Intro
它写在那里“•const int i = 3 //不能改变const变量的值”
但是我的代码
#include<iostream>
using namespace std;
int main()
{
const int i = 44;//trying
cout<<i;
return 0;
}
作品 为什么? 我也在Windows 7中使用代码块
答案 0 :(得分:1)
您永远不会更改i
的值,对吗?
const int i = 44; // initialization - OK
i = 44; // assignment - not OK
答案 1 :(得分:1)
语句const int i = 3
告诉c ++编译器i
是int类型的变量,它是一个常量并且值为3.
这意味着任何进一步尝试更改i的值都将导致编译错误。在您的示例代码中,您无法在第一次初始化后更改i的值。
答案 2 :(得分:0)
您的变量i
声明为const
,这意味着它只能初始化,但以后无法在代码中更改。但是,如果所有常数都必须具有3
的值,那么你是不是没有意义,不同意吗?因此,在初始化时,您可以将其设置为您喜欢的任何整数值;但编译器不允许您稍后在代码中更改它;试试这个,它会给你一个编译器错误:
const int i = 3;
// ...
i = 44; // <- here the compiler will complain, saying that i was declared const
答案 3 :(得分:0)
const表示一旦设置,就不能在执行期间更改该变量的值。但是,值可以在第一次设置为任何值。
答案 4 :(得分:0)
它有效,因为您没有更改代码中“i”的值
const int i = 44; // Initialization of a const value, OK.
cout << i; // Just reading the value, this is OK
i = 44; // This will not work because you can't change the value of a const type.
答案 5 :(得分:0)
它的工作原理是因为初始化和赋值之间的C ++存在差异。
声明变量时,您可以选择初始化它:
int i; // i is uninitialized
int j = 42; // j is initialized
在此之后,一旦变量存在,您就无法再初始化它。它具有现在的任何值(i
具有一些随机垃圾值,j
具有值42
)。你所能做的就是为其分配一个新值:
i = 43;
j = 44;
当变量为常量时,您无法为其分配新值。你仍然可以初始化它,但是一旦它被初始化,它就永远不会改变。
所以const int i = 44
完全有效,因为您初始化一个新变量,而不是为现有变量分配一个新值。