a = b-' ';难道不应该为2

c语言基本问题:
a = b-' ';难道不应该为2
正文长度小于30个字符,请进行修改,正文长度小于30个修改

img

那肯定不是啦, b - ' ' ,这是两个字符相减,实际上是两个字符对应的ascii码 相减
字符 '2' 的ascii码是 50, 空格对应的 ascii码是 32, 这结果就显而易见了

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    问题标题: "a = b-' '的结果应该是多少?"

    问题内容: "我在学习C语言基础,遇到一个问题:为什么a = b-' '的结果不是2?请帮忙解答一下。"

    问题分析: 在C语言中,字符变量是以ASCII码来存储和表示的。当我们用一个字符减去另一个字符时,实际上是将两个字符对应的ASCII码相减。所以问题可以转化为 b 的ASCII码减去 ' '(空格字符)的ASCII码。

    解决方案: 首先,我们需要确定 b 的类型和值。

    代码示例:

    #include <stdio.h>
    
    int main() {
        char b = 'b';
        printf("b的ASCII码:%d\n", b);
        return 0;
    }
    

    运行以上代码,得到输出结果:

    b的ASCII码:98
    

    可以得知,b 的ASCII码为 98。

    然后,我们需要确定 ' '(空格字符)的ASCII码。

    代码示例:

    #include <stdio.h>
    
    int main() {
        char space = ' ';
        printf("空格字符的ASCII码:%d\n", space);
        return 0;
    }
    

    运行以上代码,得到输出结果:

    空格字符的ASCII码:32
    

    可以得知,空格字符的ASCII码为 32。

    最后,我们可以根据 ASCII码的计算规则来计算 a 的值。

    代码示例:

    #include <stdio.h>
    
    int main() {
        char b = 'b';
        char space = ' ';
        int a = b - space;
        printf("a的值:%d\n", a);
        return 0;
    }
    

    运行以上代码,得到输出结果:

    a的值:66
    

    所以,a = b-' ' 的结果是 66,而不是2。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^