共用方式為


C6269

警告 C6269: 作業順序可能不正確: 已忽略取值

這個警告表示指標取值的結果會被忽略,這會引發為何指標最先進行取值的問題。

編譯器會適當地將不必要的取值處理掉以進行最佳化。 不過,在某些情況下,這項缺失可能會反映出優先順序或邏輯錯誤。

這項缺失的其中一個常見原因就是運算陳述式 (Expression Statement) 的形式:

*p++;

如果此陳述式的目的只在於遞增指標 p,則不一定需要取值。不過,如果其目的在於遞增 p 所指向的位置,則程式不會表現出所要的行為,原因在於*p++ 建構會解譯為 * (p++), 而非 (*p)++。

範例

下列程式碼將產生出這個警告:

#include <windows.h>

void f( int *p )
{
    // code ...
  if( p != NULL )
    *p++;
    // code ...
}

若要更正這個警告,請使用括弧,如下列程式碼所示:

#include <windows.h>

void f( int *p )
{
    // code ...
  if( p != NULL )
    (*p)++;
    // code ...
}