-
-
[讨论]奇怪现象
-
发表于:
2009-11-19 09:10
3964
-
繁忙高手说一下原因:
char Ctfunlower(int c)
{
return (c>='A' && c<='Z') ? c + 'a' - 'A' : c ;
}
char Ctfunupper(int c)
{
return (c>='a' && c<='z') ? c + 'A' - 'a' : c ;
}
int main(void)
{
int c;//error
//char c;//ok
while (1)
{
scanf("%c",&c);
if (c == '.')
{
printf("\nEnd... ...\n");
break;
}
c = Ctfunlower(c);
//c = Ctfunupper(c);
printf("%c",c);
}
return 0;
}
请输入测试一下,无论是大转小写还是小写转大写,第一个字符始终无法转换成功。
但是如果将两个转换函数的形参类型改为char方可正常,或者将main()函数中的int c变量改为char类型(此时转换函数的形参可为int)传给转换函数也可以正常。
(貌似无论输入的第一个字符是什么好像根本就无效,不单单是在转换函数中无效);
这是咋回事啊?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课