首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >unsigned short int的格式说明符是什么?

unsigned short int的格式说明符是什么?
EN

Stack Overflow用户
提问于 2012-01-02 18:35:46
回答 2查看 318.7K关注 0票数 142

我有以下程序

代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
    unsigned short int length = 10; 

    printf("Enter length : ");
    scanf("%u", &length);

    printf("value is %u \n", length);

    return 0;
}

当使用gcc filename.c进行编译时,它会发出以下警告(在scanf()行中)。

warning: format ‘%u’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘short unsigned int *’ [-Wformat]

然后,我引用了C99 specification - 7.19.6 Formatted input/output functions,在将长度修饰符(如shortlong等)与unsigned一起用于int数据类型时,我无法理解正确的格式说明符。

%u是正确的说明符unsigned short int吗?如果是这样,为什么我会收到上面提到的警告?!

编辑:大多数时候,我在尝试%uh,但它仍然给出警告。

EN

回答 2

Stack Overflow用户

发布于 2012-01-02 23:37:13

对于scanf,您需要使用%hu,因为您将传递一个指向unsigned short的指针。对于printf,由于默认提升,不可能传递unsigned short (它将被提升为intunsigned int,这取决于int是否至少具有与unsigned short相同的值位),因此%d%u可以。不过,如果你愿意,你可以自由地使用%hu

票数 55
EN

Stack Overflow用户

发布于 2018-03-01 15:50:44

下面是printf说明符的good table。因此,对于unsigned short int,它应该是%hu

还有link to Wikipedia "C data types"也是。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8699812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档