Compartir a través de


C6260

Actualización: noviembre 2007

C6260

Advertencia C6260: sizeof * sizeof suele ser erróneo. ¿Deseaba utilizar un recuento de caracteres o un recuento de bytes?

Esta advertencia indica que se han multiplicado entre sí los resultados de dos operaciones sizeof. El operador sizeof de C/C++ devuelve el número de bytes de almacenamiento que un objeto utiliza. Normalmente, es incorrecto multiplicarlo por otra operación sizeof; por regla general, el interés reside en conocer el número de bytes de un objeto o el número de elementos de una matriz (por ejemplo, el número de caracteres de ancho de una matriz).

Existe algún tipo de comportamiento no intuitivo asociado al operador sizeof. Por ejemplo, en C, sizeof ('\0') == 4, porque el tipo de un carácter es integral. En C++, el tipo de un literal de carácter es char, por lo que sizeof ('\0') == 1. Sin embargo, en C y C++, se cumple lo siguiente:

sizeof ("\0") == 2. 

Ejemplo

El código siguiente genera esta advertencia:

#include <windows.h>

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

Para corregir esta advertencia, utilice el código siguiente:

#include <windows.h>

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

Vea también

Referencia

sizeof Operator

The sizeof Operator