共用方式為


C6260

警告 C6260: sizeof * sizeof 幾乎都會得到錯誤的結果,您原先要使用的是字元計數還是位元組計數?

這則警告表示兩項 sizeof 運算的結果已相乘。 C/C++ sizeof 運算子會傳回物件所使用之儲存體的位元組數目。 一般而言,將兩個 sizeof 運算相乘會得到不正確的結果;通常,其中一個 sizeof 會是物件中的位元組數目或陣列中的元素數目 (例如,陣列中寬字元的數目)。

會有某些與 sizeof 運算子相關聯的不易了解行為。 例如,在 C 中,因為字元屬於整數類資料型別 (Integral Type),所以 sizeof ('\0') == 4,。 在 C++ 中,字元常值 (Character Literal) 的型別為 char,因此 sizeof ('\0') == 1。 不過,在 C 和 C++ 中,以下的運算式為 true:

sizeof ("\0") == 2. 

範例

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

#include <windows.h>

void f( )
{
  int i;
  i = sizeof (L"String") * sizeof (WCHAR);
  // code ...
}

若要更正這則警告,請使用下列程式碼:

#include <windows.h>

void f( )
{
  int i;
  i= sizeof (L"String") / sizeof (WCHAR);
  
  /* or to get bytes */
  i = sizeof (L"String");
  // code ...
}

請參閱

參考

sizeof Operator

sizeof Operator (C)