Condividi tramite


C6260

Aggiornamento: novembre 2007

C6260

avviso C6260: sizeof * sizeof è quasi sempre errato. Si intendeva utilizzare un conteggio di caratteri o un conteggio di byte?

L'avviso indica che i risultati di due operazioni sizeof sono stati moltiplicati tra loro. L'operatore C/C++ sizeof restituisce il numero di byte di archiviazione utilizzati da un oggetto. Di norma, non è corretto moltiplicarlo per un'altra operazione sizeof; di solito si è interessati al numero di byte in un oggetto o al numero di elementi in una matrice (ad esempio, al numero di caratteri estesi).

All'operatore sizeof è associato un comportamento non intuitivo. In C, ad esempio, sizeof ('\0') == 4, perché un carattere è di tipo integrale. In C++ un tipo di carattere letterale è char, pertanto sizeof ('\0') == 1. Tuttavia, sia in C che in C++, l'espressione riportata di seguito è true.

sizeof ("\0") == 2. 

Esempio

Il codice seguente genera questo avviso:

#include <windows.h>

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

Per risolvere il problema, utilizzare il codice seguente:

#include <windows.h>

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

Vedere anche

Riferimenti

sizeof Operator

The sizeof Operator