visual-studio - 在vs编译器中,如何将0-255的整数读入unsigned char

查看:260
本文介绍了visual-studio - 在vs编译器中,如何将0-255的整数读入unsigned char的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

描述

我想将0-255的整数读入到unsigned char:

#include<stdio.h>
int main(void)
{
    unsigned char value;

    /* To read the numbers between 0 to 255 */
    printf("Please enter a number between 0 and 255 \n");
    scanf("%u",&value);
    printf("The value is %u \n",value);

    return 0;
}

g++:

有警告(warning: format ‘%u’ expects type ‘unsigned int *’, but argument 2 has type ‘unsigned char *’),运行成功。

vs2008:

run-time check failure #2:stack around variable 'value' was corrupted.

将代码中的%u改为%hhu后:

g++:

没有警告,运行成功。

vs2008:

依然是run-time check failure #2:stack around variable 'value' was corrupted.

好像vs编译并不识别输入格式中h这个符号,将%hhu等同于%u(个人猜测)。

问题:

在vs编译器中,如何将0-255的整数读入unsigned char?

参考资料:
http://www.cnblogs.com/ayanmw...


补充

@kostring
你的代码在我的vs2008上运行结果:

解决方案

vs2008不支持%hh,VS2015支持%hh。

详见vs2008的msdn文档:
scanf Width Specification:https://msdn.microsoft.com/en...
scanf Type Field Characters:https://msdn.microsoft.com/en...

另,vs2008支持%hu(当然vs2015也支持),以下代码在VS2008和vs2015都没有报错。

    unsigned short ch1;
    printf("get char:  ");
    scanf("%hu", &ch1);
    printf("what we get: %u, %c\n", ch1, ch1);

c90不支持%hh,c99开始支持。见http://stackoverflow.com/ques...

这篇关于visual-studio - 在vs编译器中,如何将0-255的整数读入unsigned char的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆