首页 > 解决方案 > 未使用计算的值,“如何解决警告”

问题描述

// 在下面的代码中,得到警告,如何清除警告?

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 
    }

标签: c++

解决方案


因为运算符优先级 *ptr++被评估为 *(ptr++).

即“取消引用”的结果ptr++。但是,正如警告所说,您永远不会使用取消引用的值。


你有两个选择:
  1. 如果您想增加ptr(即更改它指向的位置),请使用ptr++.
  2. 如果你想增加ptruse指向的值(*ptr)++

很可能你想要第一个。


推荐阅读