c++ - 未使用计算的值,“如何解决警告”
问题描述
// 在下面的代码中,得到警告,如何清除警告?
for(unsigned int i = 0; i<sizeof(array) / sizeof(string); i++,*ptr++) // warning.
{
cout<<*ptr<<", ";
}
cout <<endl;
string *ptr1 = &array[0];
string *ptr2 = &array[2];
while(1)
{
cout<<*ptr1 <<", ";
if(ptr1==ptr2)
break;
*ptr1++; // Warning
}
解决方案
因为运算符优先级 *ptr++
被评估为 *(ptr++)
.
即“取消引用”的结果ptr++
。但是,正如警告所说,您永远不会使用取消引用的值。
你有两个选择:
- 如果您想增加
ptr
(即更改它指向的位置),请使用ptr++
. - 如果你想增加
ptr
use指向的值(*ptr)++
很可能你想要第一个。
推荐阅读
- javascript - Chrome:document.cookie 的顺序有保证吗?
- javascript - Bootstrap toast 移动所有元素
- c++ - 通过将它们的元素线程化到类型对来解包两个参数包
- ios - 为什么 Uber Deeplink 不重定向到 APPStore
- javascript - 在使用 JavaScript 完成的第二个 onclick() 事件之后,css 中的悬停事件不起作用
- c - 如何在 C 中将诸如 123 之类的数字分成 1、2 和 3?
- javascript - 为什么我无法在表单中获得输入的值
- bash - 如何在shell脚本中的循环内grep数组索引
- reactjs - 如何在 chart.js 库的开发人员导航中使用“新轴”?
- vue.js - 使用 Vue CLI 项目触发页面重新加载对导入的 JS 文件的更改