Поделиться через


C6273

Предупреждение 6273: В качестве параметра <номер>, передано нецелочисленное значение, хотя при вызове <функция> требуется целочисленный аргумент: если передается значение указателя, следует использовать %p

Данное предупреждение означает, что строка формата указывает на необходимость целого числа (например, указания параметра %d, длины или приоритета для функции printf), однако в качестве параметра передан другой тип, такой как значение float, struct или строка.Эта ошибка может привести к неверным результатам.

Пример

В следующем коде создается данное предупреждение, поскольку вместо значения float в функцию sprintf требуется передать целое число:

#include <stdio.h>
#include <string.h>

void f_defective()
{
  char buff[50];
  float f=1.5;
  
  sprintf(buff, "%d",f);
}

В следующем коде для устранения этого предупреждения используется приведение к целочисленному типу:

#include <stdio.h>
#include <string.h>

void f_corrected()
{
  char buff[50];
  float f=1.5;

  sprintf(buff,"%d",(int)f);
}

В следующем коде для устранения этого предупреждения используется функция безопасной обработки строк sprintf_s:

#include <stdio.h>
#include <string.h>

void f_safe()
{
  char buff[50];
  float f=1.5;

  sprintf_s(buff,50,"%d",(int)f);
}

Данное предупреждение неприменимо в операционных системах Windows 9x и Windows NT версии 4, поскольку %p не поддерживается на этих платформах.

См. также

Ссылки

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l