共用方式為


C6273

警告 6273: 傳遞非整數做為參數 <number>,但 <function> 呼叫中需要整數: 如果傳遞指標值,則應使用 %p

這個警告表示格式字串 (Format String) 指定整數 (例如,printf 的 %d、長度或優先順序規格),但卻傳遞非整數 (例如 float、string 或 struct) 做為參數。 這項缺失可能會導致不正確的輸出。

範例

下列程式碼會因為需要的是整數,而不是 sprintf 函式的 float,而產生這個警告:

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

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

下列程式碼會使用整數轉型 (Cast) 來更正這個警告:

#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