“int”和“char”之间的比较?

“int”和“char”之间的比较?,c,C,下面代码的结果是否定的,但我不确定“为什么”?在谷歌搜索并找到一些信息,但我很困惑。。。有人能给我解释一下吗?谢谢 int i = 23; char c = -23; if (i < c) { printf("Yes"); } else { printf("No"); } 不幸的是,imho char被认为是整数类型,您可以将其视为整数类型,而无需任何显式强制转换 char与有符号char和无符号char是不同的类型。字符是无符号

下面代码的结果是否定的,但我不确定“为什么”?在谷歌搜索并找到一些信息,但我很困惑。。。有人能给我解释一下吗?谢谢

int i = 23;
char c = -23;

if (i < c)
{
    printf("Yes");
}
else
{
    printf("No");
}
不幸的是,imho char被认为是整数类型,您可以将其视为整数类型,而无需任何显式强制转换

char与有符号char和无符号char是不同的类型。字符是无符号的还是有符号的是实现定义的

当用于算术运算时,包括比较秩小于或等于int秩的整数类型,因此您的代码等效于:

if ((int)i < (int)c)
char的另一个用途是访问原始内存。C没有字节类型,而char是。。。字节类型


仅仅因为你能,并不意味着你应该。将字符用于。。。好人物。对于内存访问,很多API都使用char*,但如果可以的话,应该使用unsigned char*。对于小整数,如果确实需要节省空间,请使用int8_t和uint8_t,这两个值应分别为有符号字符和无符号字符的别名。

23<-23为false,为什么你会感到惊讶?我想他可能是想问为什么他可以在字符和int之间做这样的比较——但不确定@HolyBlackCatchar在C中是整数类型。。。。它在比较之前被提升为“full”int。char只是一个小整数类型,类似于short。它通常是有符号的,但我相信在某些实现中它可能是无符号的。这就是为什么您应该只使用char类型的char文本和带符号/无符号char的numbers。