【发布时间】:2015-05-27 16:10:01
【问题描述】:
据我所知,char、int 等变量类型之间的唯一区别是它们占用的内存量。我猜他们在调节他们持有的变量代表什么方面没有任何作用。如果这是真的,在here 中,我看到了strcmp 的以下内容:
strcmp 函数将字符串 s1 与 s2 进行比较,返回一个 与第一个之间的差具有相同符号的值 不同的字符对(解释为 unsigned char 对象, 然后提升为 int)。
我想问为什么结果会提升为int?由于正在比较chars,因此它们的差异在所有情况下都适合char。那么不是将结果提升到int 只是在结果末尾附加一堆 0 吗?那么,为什么要这样做呢?
【问题讨论】:
-
为什么会返回
char?它返回字符串之间的差异。 -
是的,但它不会在看到第一个不匹配的字符时停止吗?那么结果必须适合一个字符。有错吗?
-
两个 8 位字符之间的差异将在 -255 和 255 之间,并且该范围不适合一个字符。
-
@wonkorealtime 我知道。我只是指出,假设两个字符之间的差异可以存储在一个字符中,OP 是错误的。