forse234 发表于 2022-9-20 17:01:59

C语言运算问题

需求:在只输入字母的情况下,我想把大写字母转换为小写字母,若是小写字母则原样输出
遇到问题:#include <stdio.h>

void main()
{
        char a;
        printf("please input a letter\n");
        scanf("%c",&a);
        printf("The result is %c\n",(a>='a')&&(a<='z')?a:a-32); //大写字母转换为小写
}
编译运行下,当输入小写字母正常输出,但是当输入大写字母是,输出结果一直为The result is !
为什么输出结果会是!想不明白这个运算过程
操作系统:Win7
编译软件:Visual C++6.0 sp3
谢谢

jackz007 发表于 2022-9-20 17:20:08

本帖最后由 jackz007 于 2022-9-20 17:21 编辑

#include <stdio.h>

int main(void)
{
      char a                                                             ;
      printf("please input a letter\n")                                  ;
      scanf("%c" , & a)                                                ;
      printf("The result is %c\n" , (a >= 'A' && a <= 'Z') ? a + 32 : a) ;// 手术刀必须只精准落在大写字母上
}

forse234 发表于 2022-9-20 17:27:39

感谢回复,我知道这个解法,但我想知道我上述的过程为什么会输出!{:5_96:}

wp231957 发表于 2022-9-20 17:37:05

forse234 发表于 2022-9-20 17:27
感谢回复,我知道这个解法,但我想知道我上述的过程为什么会输出!

大写字母码值减32是啥???估计啥都不是

jackz007 发表于 2022-9-20 17:43:16

forse234 发表于 2022-9-20 17:27
感谢回复,我知道这个解法,但我想知道我上述的过程为什么会输出!
      大写字母改小写是 + 32,不是 - 32
      printf("The result is %c\n",(a>='a')&&(a<='z')?a:a-32);
      改为
      printf("The result is %c\n",(a>='a')&&(a<='z')?a:a+32);

forse234 发表于 2022-9-20 18:00:50

jackz007 发表于 2022-9-20 17:43
大写字母改小写是 + 32,不是 - 32

      改为

感谢

forse234 发表于 2022-9-20 18:01:31

wp231957 发表于 2022-9-20 17:37
大写字母码值减32是啥???估计啥都不是

哈哈{:5_107:},想明白了,感谢回复
页: [1]
查看完整版本: C语言运算问题