如何从C中的字符中减去整数?

Gir*_*yas 2 c c++ variables int char

Brian Kernighnan在他的"用C编程"一书中说

根据定义,字符只是小整数,因此char变量和常量与算术表达式中的int相同.

这是否意味着我们可以从int中减去char变量?

我写了一小段代码:

#include <stdio.h>

main()
{
    int a ;
    int c;
    a = 1;
    c = 1 - '0' ;
    printf("%d", c);
}
Run Code Online (Sandbox Code Playgroud)

但它给我输出= -47 ...

那是什么我做错了?我指定的变量是否具有正确的类型?

Dav*_*nan 6

输出是预期的.'0'是一个char值,因为您的编译器可能使用ASCII编码,其值为48.这将转换为int和减去1.这给了价值-47.

所以程序会按照预期的方式完成,而不是你希望它会做什么.至于你做错了什么,很难说.我不确定你对程序的期望,或者你想要解决的问题.