考虑以下C++代码:
#include <cstdio>
using namespace std;
int main()
{
int ia = -5;
unsigned int uia = ia;
char ca = -5;
unsigned char uca = ca;
printf("%d\n", (ia == uia));
printf("%d\n", (ca == uca));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
1
0
Run Code Online (Sandbox Code Playgroud)
我不明白有什么之间的区别int,并char同时从铸造signed到unsigned?
你能开导我吗?
从signed转换为unsigned时,它们的行为都相同.不同的是==比较.它的行为符合int/unsigned的预期,但是当你比较两个较小的类型时,它们都会被提升为int第一个.所以会发生的是-5和-5的无符号8位表示都被提升到int然后进行比较.这些明显不同,无法进行比较.