【问题标题】:const integer simple [closed]const 整数简单 [关闭]
【发布时间】:2011-12-29 10:45:46
【问题描述】:

我正在尝试通过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 中使用代码块

【问题讨论】:

  • 如果 const 意味着您甚至不能为符号分配 initial 值,那么拥有它将毫无价值。

标签: c++ constants


【解决方案1】:

你永远不会改变i的值,对吧?

const int i = 44; // initialization - OK

i = 44; // assignment - not OK

【讨论】:

    【解决方案2】:

    statement const int i = 3 告诉 c++ 编译器 i 是一个 int 类型的变量,它是一个常量,值为 3。

    这意味着任何进一步尝试更改 i 的值都会导致编译错误。在您的示例代码中,您无法在第一次初始化后更改 i 的值。

    【讨论】:

      【解决方案3】:

      const 表示一旦设置,在执行期间就不能更改该变量的值。但是,该值可以在第一次设置为任何值。

      【讨论】:

        【解决方案4】:

        您的变量i 被声明为const,这意味着它只能被初始化,但不能在以后的代码中更改。但是,如果所有常量都必须具有值3,那将没有意义,您不同意吗?所以在初始化的时候,可以设置成任何你喜欢的整数值;但是编译器不允许您稍后在代码中更改它;试试这个,它会给你一个编译器错误:

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

        【讨论】:

          【解决方案5】:

          之所以有效,是因为您没有更改代码中“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.
          

          【讨论】:

            【解决方案6】:

            之所以有效,是因为 initializationassignment 在 C++ 中存在差异。

            当你声明一个变量时,你可以选择初始化它:

            int i; // i is uninitialized
            int j = 42; // j is initialized
            

            在这点之后,一旦变量存在,你就不能再初始化它了。它现在有任何值(i 有一些随机垃圾值,j 有值42)。你所能做的就是分配一个新值给它:

            i = 43;
            j = 44;
            

            当变量为 const 时,您不能分配新值给它。您仍然可以初始化它,但是一旦初始化,它就永远不会改变。

            所以const int i = 44 完全有效,因为您正在初始化一个新变量,而不是分配一个新值给现有变量。

            【讨论】:

              猜你喜欢
              • 2012-04-30
              • 1970-01-01
              • 1970-01-01
              • 2012-06-15
              • 2011-11-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多