【问题标题】:Implementation of Assignment operator赋值运算符的实现
【发布时间】:2015-08-23 12:57:54
【问题描述】:

我可以用级联的方式写赋值运算符吗?下面是两个语句我怎么写它们

 total_marks/=1000;
 total_marks*=100;

我们可以做一些类似但我们放置 100 的地方

total_marks*=total_marks/=1000;     

【问题讨论】:

  • 您的代码中没有赋值运算符。我认为您需要澄清术语。
  • total_marks=total_marks/1000;它为 total_marks 赋值。不是吗?
  • @juanchopanza 你会怎么称呼/=*=
  • @user3386109 我应该把 100 放在哪里?
  • 简单易读的total_marks = (total_marks / 1000) * 100有什么问题?

标签: c assignment-operator


【解决方案1】:

没有。 /=*= 运算符的结果不会返回左值,因此不能用于另一个赋值的左侧。简单、明显、易读有什么问题:

total_marks = (total_marks / 1000) * 100;

【讨论】:

  • 我同意你的建议,但不同意答案的第一行。赋值运算符从右到左计算。因此,例如int a=10,b=2; a+=b*=3; 是完全有效的并设置a=16b=6
  • 你是对的,但这无助于他做他想做的事。
【解决方案2】:

在 C++ 中,您可以编写示例

( total_marks/=1000 ) *= 100;

但是在 C 中,这段代码不会编译。

在 C ( 和 C++ ) 中,您可以使用逗号运算符编写以下方式

total_marks/=1000, total_marks *= 100;

我的意思是如果你在表达式中需要这个。

【讨论】:

  • @sony 在 C 中,赋值运算符返回右值。
  • C++ 中的操作符通常返回对执行操作的对象的引用。在这种情况下,“total_marks”。在 C 中,这些操作返回一个值而不是一个引用,所以你不能赋值。
猜你喜欢
  • 2021-11-02
  • 1970-01-01
  • 2011-05-23
  • 2011-08-02
  • 2019-10-06
  • 2011-11-16
  • 2017-02-17
  • 2013-11-30
  • 2015-10-02
相关资源
最近更新 更多