【问题标题】:C++ warning [-Wunused-value]C++ 警告 [-Wunused-value]
【发布时间】:2015-03-16 21:40:23
【问题描述】:

我的 c++ 代码有问题,没有错误,只有警告阻止我的代码正常工作。我想将屏幕尺寸乘以百分比,然后打印出来。

这是在我的 .h 文件中:

SmartWatch* multiply(SmartWatch* second, double percentage);

这是在我的 .cpp 文件中:

SmartWatch* SmartWatch::multiply(SmartWatch* second, double percentage){
second->getScreen_size() * percentage;
return second;
}

这是主要的:

SmartWatch *multiplied = &watch[0];
multiplied = multiplied ->multiply(&watch[1], 0.23);
multiplied->print();

我收到此警告:

smartwatch.cpp:69:31:警告:表达式结果未使用 [-Wunused-value] second->getScreen_size() * 百分比;

我是新手,所以我不知道我做错了什么。

【问题讨论】:

  • " 阻止我的代码正常工作" - 那么您期望什么行为以及您观察到什么行为?除非我们确切地知道问题是什么,否则您希望我们告诉您如何解决它?
  • second->getScreen_size() * percentage; 所以你将两个数字相乘。你对乘法的结果做了什么?现在,执行该行后,结果就消失得无影无踪了。

标签: c++ class constructor


【解决方案1】:

您正在计算second->getScreen_size()percentage 的乘积。

编译器告诉你结果没有被使用。

仅当您对结果执行某些操作(例如将其存储在变量中)时,计算乘积才有用。如果您不对其进行任何操作,编译器只会将其删除以提高程序的速度。

由于您编写了一些永远不会真正完成的程序,因此您的编译器会告诉您您可能在那里犯了错误。由于这不是技术错误,因此编译器仅将其视为警告

【讨论】:

    【解决方案2】:

    您实际上并没有将乘法的值存储在任何地方的multiply 方法中。编译器会警告您,因为代码行 second->getScreen_size() * percentage; 不会存储结果或更改值。乘法的结果将被丢弃。

    要修复警告,您应该将结果存储回SmartWatch* second 指针中的某个位置。我不确定您的课程设计是什么样的,但您可以执行以下操作:

    second->setScreen_size(second->getScreen_size() * percentage);
    

    删除警告,然后使用您编写的方法实际完成一些事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多