2011-12-29 61 views
-3

我試圖去通過C++ Intro常量整數簡單

這是寫有 「•const int的I = 3 //不能改變常量變量的值」

,但我的代碼

#include<iostream> 
using namespace std; 

int main() 
{ 

const int i = 44;//trying 
cout<<i; 
return 0; 
} 

作品 爲什麼? 此外,我使用的代碼塊在Windows 7

+1

如果'const'意味着你甚至不能爲一個符號分配一個* initial *值,那麼完全沒用它。 – 2011-12-29 12:34:07

回答

0

你的變量i被聲明爲const,這意味着它只能被初始化,但不能在後面的代碼改變。但是,如果所有常量必須具有值3,那麼這是沒有意義的,你不同意嗎?所以在初始化時,你可以將它設置爲你喜歡的任何整數值;但編譯器不會允許您稍後在代碼中更改它;試試這個,它會給你一個編譯器錯誤:

const int i = 3; 
// ... 
i = 44; // <- here the compiler will complain, saying that i was declared const 
1

你永遠不會改變的i價值,對不對?

const int i = 44; // initialization - OK 

i = 44; // assignment - not OK 
0

const意味着一旦設置,您不能在執行過程中更改該變量的值。但是,價值可以設置爲任何第一次。

1

語句const int i = 3告訴C++編譯器i是int類型的變量,它是一個常數,具有值3。

這意味着任何進一步的嘗試來改變i的值會導致編譯錯誤。在您的示例代碼中,您不能在第一次初始化後更改i的值。

0

它的工作,因爲你沒有在你的代碼

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. 
0

它的工作原理,因爲在C++ 初始化分配之間的差異「我」改變的值。

當你聲明一個變量,你可以選擇將其初始化:

int i; // i is uninitialized 
int j = 42; // j is initialized 
這一點後

,一旦變量存在,你不能再對其進行初始化。它具有現在的任何價值(i有一些隨機垃圾值,j的值爲42)。所有你能做的卻是分配一個新的值給它:

i = 43; 
j = 44; 

當一個變量是常量,你不能分配一個新的值給它。你仍然可以初始化它,但是一旦它被初始化,它永遠不會改變。

所以const int i = 44是完全有效的,因爲你是初始化一個新的變量,而不是分配新價值的現有變量。