为什么函数是';下';是否将int作为返回类型和输入类型? int main(无效) { 字符s[]=“ABCDEFGHIJKLMNOPQRSTUVWXYZ”; int i; i=0; 而(s[i]!='\0'){ printf(“%c->%c\n”,s[i],下(s[i]); i++; } 返回0; } 整数下限(整数c) { 返回(c>='A'&&c
为什么函数“lower”将int作为返回类型和输入类型为什么函数是';下';是否将int作为返回类型和输入类型? int main(无效) { 字符s[]=“ABCDEFGHIJKLMNOPQRSTUVWXYZ”; int i; i=0; 而(s[i]!='\0'){ printf(“%c->%c\n”,s[i],下(s[i]); i++; } 返回0; } 整数下限(整数c) { 返回(c>='A'&&c,c,int,C,Int,为什么函数“lower”将int作为返回类型和输入类型 代码完全是intmath。即使签名是char c,由于通常的整数升级,代码也会有int结果 int main(void) { char s[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int i; i = 0; while (s[i] != '\0') { printf("%c -> %c\n", s[i], lower(s[i])); i++;
int
math。即使签名是char c
,由于通常的整数升级,代码也会有int
结果
int main(void)
{
char s[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int i;
i = 0;
while (s[i] != '\0') {
printf("%c -> %c\n", s[i], lower(s[i]));
i++;
}
return 0;
}
int lower(int c)
{
return (c >= 'A' && c<= 'Z') ? c + 'a' - 'A' : c;
}
它很可能试图模仿使用int的tolower函数 这里有一个关于tolower使用int的类似问题。
我可能错了,但我认为这是因为它会将其解释为ASCII码而不是字符,因为在C字符中,字符文字不是真正的
char
,而是int
。你的意思是islower
还是tolower
?lower
具有返回类型int
,因为你像t一样编写它帽子。请注意,您的lower
函数可能无法与C官方支持的其他字符编码一起工作。请注意,lower()
作为int
或char
的结果将转换为int
作为printf()
的参数。
int lower(int c) {
return (c >= 'A' && c<= 'Z') ? c + 'a' - 'A' : c;
}
// printf("%c -> %c\n", s[i], lower(s[i]));
printf("%c -> %c\n", s[i], lower((unsigned char) s[i]));