打印小写字母对应的大写字母的ASCII码


#include <stdio.h > 
int main(void) 
{  
    int ch;
    printf("input a word:");
    scanf("%c",&ch);
    printf("%c\n",ch-32);
    printf("%d",ch-32);
    return 0;
}

这个打印对应大写字母的ASCII码,哪里错了?为什么总是一串负数的数字?

把int ch 改为 char ch试试

你这个32是啥意思?为什么要减掉?本身ch里面就是存的ASCII码,因此直接输出ch的数字即是ASCII编码
另外定义变量应该用char,而非int
int一般占四个字节,按照%c输入时只改写其中一个字节的内容,所以输出结果不可控,不知道会是什么值。修改两处错误,即可得正确结果