相关疑难解决方法(0)

是从unsigned转换为signed undefined?

void fun(){
    signed int a=-5;
    unsigned int b=-5;
    printf("the value of b is %u\n",b);
    if(a==b)
         printf("same\n");
    else
         printf("diff");
}
Run Code Online (Sandbox Code Playgroud)

它是印刷:

4294967291

相同

在第二行中,有符号值转换为无符号值.所以b的值为UINTMAX + 1 - 5 = 4294967291.

我的问题是比较操作中发生了什么.

1)是否再次转换为无符号并与b进行比较?

2)b(即无符号)是否会被转换为有符号值并自动进行比较?

3)由于int溢出,是否从unsigned转换为signed undefined?

我已阅读有关该主题的其他帖子.我只想澄清问题2和问题3.

c

10
推荐指数
1
解决办法
3392
查看次数

标签 统计

c ×1