char值不能直接用作数组下标

#include <stdio.h>

//用 char 的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到
//char 可能是负数。有的人考虑到了,先强制转型为 unsigned int 再用作下标,这仍然
//是错的,因为char会先字节扩展变为int,再从int变为unsigned int。
//正确的做法是,先强制转型为 unsigned char,再用作下标,这时会再隐式转换为int。
 
int main()
{
    char a = 128;

    printf("%u
", (unsigned)a);
    printf("%x
", (unsigned)a);

    printf("%u
", (unsigned char)a);
    printf("%x
", (unsigned char)a);

    return 0;
}

//4294967168
//ffffff80
//128
//80
//请按任意键继续. . .
原文地址:https://www.cnblogs.com/lakeone/p/4985368.html