当前位置:  开发笔记 > 编程语言 > 正文

警告:格式'%x'需要'unsigned int'类型的参数

如何解决《警告:格式'%x'需要'unsignedint'类型的参数》经验,为你挑选了2个好方法。



1> Sourav Ghosh..:

由于以下声明,您收到警告

    printf("Name buffer address:    %x\n", buffer);
    printf("Command buffer address: %x\n", c);

%x期待一个unsigned int,而你提供一个指针.

参考,C11标准,章节§7.21.6.1

o,u,x,X
unsigned int参数在样式dddd中转换为无符号八进制(o),无符号十进制(u)或无符号十六进制表示法(x或X); [...]

提供无效参数会调用未定义的行为.

你应该%p用来打印地址

p参数应该是指针void.[...]

并且将参数强制转换为void *,因为对于指针类型,不会发生默认参数提升.

话说回来,

    main()应该int main(void)至少符合标准.

    你需要转发声明你的函数,bo()因为隐式声明现在是坏的和非标准的.



2> Iharob Al As..:

要打印地址,请使用"%p"而不是"%x".你还需要施展void *

printf("Name buffer address:    %p\n", (void *) buffer);

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有