Hi all
大家好,这里有个问题想请教
开发平台(Platform): (Ex: Win10, Linux, ...)
windows 10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Visual studio 2019,.c file
问题(Question):
unsigned int a=10;
int b=-2;
unsigned int c=1;
if(a*b>c)
{
printf("Hello\n");
}
else
{
prntf("No Hello\n");
}
预期的正确结果(Expected Output):
No Hello
错误结果(Wrong Output):
Hello
补充说明(Supplement):
ref:https://en.cppreference.com/w/c/language/conversion
我的理解:
a和b的rank应该是相同的。
且根据integer promotion的规则,a*b应该是先各自promote成int再乘,怎么会是promot
e成unsigned?
开个大决:感觉这里没人会阿XD,ptt没人才惹。