【发布时间】:2012-05-03 02:20:00
【问题描述】:
我只是一个很棒的编程难题。为什么是一样的?
#include <stdio.h>
#include <limits.h>
int main(int argc, char *argv[])
{
unsigned int x = ULONG_MAX;
char y = -1;
if (x == y) printf("That is same.");
return 0;
}
我认为 unsigned int 被转换为signed char,因此它将是-1。它可能是比较有符号和无符号类型的标准。不知道……
【问题讨论】:
-
这是作业吗?如果是,请使用homework 标签。
-
这不是一个谜题,如果您知道什么是补码算法,这完全是意料之中的行为。
-
如何才能对家庭作业投赞成票?那是非常困难的代码,为什么它会这样工作。 :-) wildplasser:也许吧。对不起,但我不以标准为导向。 ;-)
-
顺便说一句:你不比较变量;你比较值。值也有类型,部分继承自它们所源自的变量;部分由他们提交的运营商塑造。语法可能是
expr == expr,但表达式也有值和类型。
标签: c