【问题标题】:How should i read an assignment?我应该如何阅读作业?
【发布时间】:2014-09-24 16:41:41
【问题描述】:

我作为初学者正在学习 C++,我的书向我解释了什么是作业,但我无法理解这本书试图让我理解的一点概念:

int a = 3; // a starts out with the value 3
a = a + 7; // a gets the value of a + 7 (that is, 10)

我的书说的是:最后一个赋值值得关注。首先它清楚地表明 = 并不意味着等于——显然,a 不等于 a + 7。它意味着赋值,即放置变量中的新值。这是什么意思 ?我应该如何阅读作业? 例如: 一 = 一 + 7; // 我应该把它理解为:a 等于 a + 7 吗?

【问题讨论】:

  • int a = 3; 中,从技术上讲,它不是一个赋值,而是一个初始化
  • 将其读作“将a+7 的(值)分配给(变量)a”。不要把它读成“等于”,因为(正如你的书所说)它并不意味着“等于”,它意味着“分配”。
  • 我这样读:“使 a 等于 a + 7”。实际上(显示我的 BASIC 传统)在我的脑海中是“LET a = a + 7”(如让光出现!)。

标签: c++ variable-assignment assignment-operator


【解决方案1】:

代码可以按如下方式展开:

int a; // declaration of the variable.        a has undefined value.
a = 3; // Assign the value 3 to a.            a is 3.
a = a + 7; // Assign value of (a + 7) to a.   a is 10.

首先计算表达式 (a + 7),然后将 (3 + 7) 的值赋给 a。

token = 用于赋值,和相等没有任何关系。

【讨论】:

    【解决方案2】:

    赋值意味着右侧(rhs)将被评估为单个值,然后分配给左侧(lhs)

    a = a + 7;
    

    现在,rhs --> a + 7 --> 3 + 7 --> 10,现在我们有一个值,并将 10 分配给 a

    【讨论】:

      【解决方案3】:

      在 C++ 中,= 是赋值运算符。 == 是相等运算符。

      阅读关于运算符优先级的章节(运算符对其操作数执行操作的顺序)。

      =(赋值运算符)是二元运算符,优先级最低(这就是执行第一个 a+7 运算的原因),它将其右侧表达式的结果分配给变量在其左侧

      对于a = a + 7,永远不要把它当作等号来阅读 a + 7,但要养成把它当作a来阅读的习惯被赋值为 a + 7(或任何表达式)是。

      = 还将左侧变量的现有值 (a) 替换为右侧表达式的结果 (a + 7)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-20
        • 1970-01-01
        • 2019-10-16
        • 1970-01-01
        • 1970-01-01
        • 2020-06-09
        • 1970-01-01
        相关资源
        最近更新 更多