使用char代替'int'最大的好处是什么

scl*_*ee1 0 c

下面是我的代码,将大字母转换为小写字母,反之亦然.

#if SOL_2
        char ch;
        char diff = 'A' - 'a';
        //int diff = 'A' - 'a';
        fputs("input your string : ", stdout);

        while ((ch = getchar()) != '\n') {
            if (ch >= 'a' && ch <= 'z') {
                ch += diff;
            }
            else if (ch >= 'A' && ch <= 'Z') {
                ch -= diff;
            }
            else {}

            printf("%c", ch);
        }
#endif
Run Code Online (Sandbox Code Playgroud)

上面的代码,而不是char diff = 'A' - 'a',我使用了int = 'A' -'a',结果是相同的.因此,我认为使用字符可以节省内存,因为char是一个字节,但是int是四个字节.我想不出它的其他优点.如果你让我知道它的其他优点,我将不胜感激.

使用char以存储字符值的主要原因是什么?这是因为内存大小问题?

cxw*_*cxw 8

你应该使用int chint diff.

  • getchar()回报int,而不是char.因此ch需要int.这样就可以区分文件结束和字符之间的区别0xff,这两者都是-1有符号的字节.(参考)
  • char可能是signedunsigned(见这个答案).因此,您应该使用int比较,以便知道您有负值的空间(int默认情况下已签名).

要回答您的具体问题,请char在知道自己拥有字节数据时使用,是的,您最有可能节省一些内存.使用char(或wchar_t其他字符类型)的另一个原因是让读者清楚地知道您希望这些数据是文本而不是数字,如果确实如此.另一个用例char是访问文件或其他数据流的各个字节.