为什么这里的带符号字符不被转换为unsigned int?

问题描述 投票:1回答:2
#include <stdio.h>

int main()
{
    unsigned int x =1;
    signed char y = -1;
    unsigned int sum = x + y;
    printf("%u", sum);
}

在上面的程序中,我希望将有符号的char转换为unsigned int,因此总和为x + y = 1 + 2 ^ 32 -1 = 2 ^ 32。但令人惊讶的是,它显示0。

[以前,我尝试打印(x> y)并得到false(0)作为输出。我不知道这是怎么回事,有人能解释一下在这种情况下如何投射吗?

#include int main(){unsigned int x = 1;有符号char y = -1;无符号整数和= x + y; printf(“%u”,sum); }在上面的程序中,我希望签名的char会被上载...

c output
2个回答
4
投票

将2 32


0
投票
我认为这是被过度考虑的:

4.5整体促销[conv.prom]

© www.soinside.com 2019 - 2024. All rights reserved.