提问人:Mobi Zaman 提问时间:10/31/2022 最后编辑:Jonathan LefflerMobi Zaman 更新时间:10/31/2022 访问量:2138
C 警告:传递“sprintf”的参数 1 中的指针目标在符号上有所不同
C warning: Pointer targets in passing argument 1 of ‘sprintf’ differ in signedness
问:
我有以下一段代码,用于将 的值写入缓冲区。time
temp
#include<stdio.h>
int main() {
unsigned char temp[8];
unsigned int time = 0x00101010;
sprintf(temp, "%x", time);
}
两者都是无符号值;但是,我仍然收到以下警告:temp
time
Pointer targets in passing argument 1 of ‘sprintf’ differ in signedness
有人可以解释为什么我会收到此警告以及如何删除它吗?
答:
1赞
Tenobaal
10/31/2022
#1
任一:
#include<stdio.h>
int main() {
char temp[8];
unsigned int time = 0x00101010;
sprintf(temp, "%x", time);
}
或
#include<stdio.h>
int main() {
unsigned char temp[8];
unsigned int time = 0x00101010;
sprintf((char*) &temp, "%x", time);
}
sprintf 定义为 ,因此第一个参数必须是带符号的 char 指针。sprintf(char*, const char*, ...)
评论
sprintf()
期望作为第一个参数,它可以是 - 在你的情况下显然是 - 默认签名char *
char
unsigned char
sprintf
sprintf
temp
temp
sprintf()
snprintf()
unsigned char
signed char
char
char