为什么函数是';下';是否将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

为什么函数是';下';是否将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++;

为什么函数“lower”将int作为返回类型和输入类型

  • 代码完全是
    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还是tolowerlower具有返回类型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]));