这是代码:
unsigned int c;
signed int d = -1;
c = d;
if(c == d)
printf("c == d\n");
Run Code Online (Sandbox Code Playgroud)
运行它会得到输出:c == d.
变量c不能为负吗?
根据通常的算术转换规则,表达式c == d被解释为c == (unsigned int) d.更具体地说,当在相等比较运算符中混合signed int和unsigned int操作数时,操作数在比较之前signed int被隐式转换为unsigned int类型.C中的大多数二元运算符也是如此.
同时,您指定了值cas c = d,相当于c = (unsigned int) d.
所以,你可以立即看到,你是同样的事情比较同样的事情:你基本上是比较(unsigned int) d对(unsigned int) d.难怪平等成立.
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |