#include<stdio.>
int main() {
signed x;
unsigned y;
x = 10 +- 10u + 10u +- 10;
y = x;
if(x==y)
printf("%d %d",x,y);
else if(x!=y)
printf("%u %u",x,y);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我无法理解上述程序的流程.请解释编译器如何-10u视为默认值.从我的理解10u是无符号的,但在这个程序中它自动将其转换为-10.
http://www.cquestions.com/2012/02/data-type-questions-in-c.html,问题编号.3.
-10u是应用于常量10u类型的"一元减号"运算符unsigned int.结果是-10在unsigned int类型域中表示的值.根据无符号算术的规则,最终结果将等于UINT_MAX + 1 - 10并且将具有类型unsigned int.