Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Non-integer passed as parameter 'number' when an integer is required in call to 'function'
Remarks
This warning indicates that the format string specifier in a printf like function is expecting an integer type, but a non-integer such as a float, string, or struct is being passed instead. This warning checks integer type specifiers like %d, and width/precision specifier that use integers like %*.*f. This defect is likely to result in incorrect output.
Code analysis name: NON_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION
Example
The following code generates this warning because an integer is required instead of a float in the sprintf function:
#include <stdio.h>
void f_defective()
{
char buff[50];
float f=1.5;
sprintf(buff, "%d",f);
}
The following code uses an integer cast to correct this warning. Alternatively it could have corrected the warning by modifying the format specifier to match the type.
#include <stdio.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
The following code uses safe string manipulation function, sprintf_s, to correct this warning:
#include <stdio.h>
void f_safe()
{
char buff[50];
float f=1.5;
sprintf_s(buff,50,"%d",(int)f);
}
This warning isn't applicable on Windows 9x and Windows NT version 4 because %p isn't supported on these platforms.
See also
Format specification syntax: printf and wprintf functions
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
C4477