我知道已经回答了非常类似的问题,但我相信它不能解决我的问题。
unsigned char aaa = -10;
unsigned int bbb = (unsigned int)-5;
unsigned int ccc = (unsigned int)20 + (unsigned int)bbb;
printf("%d\n", aaa);
printf("%d\n", ccc);
Run Code Online (Sandbox Code Playgroud)
上面的代码打印aaa = 246(这是我所期望的),但这ccc = 15意味着unsigned int一直被视为签名。即使尝试可能过时的类型转换,我也找不到对此的解释。