在C中被签名为无符号转换?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

假设有以下C代码。

unsigned int u = 1234;
int i = -5678;

unsigned int result = u + i;

提问于
用户回答回答于

#include <stdio.h>

int main(void)
{
  unsigned int plus_one = 1;
  int minus_one = -1;

  if(plus_one < minus_one)
    printf("1 < -1");
  else
    printf("boring");

  return 0;
}

可以使用此链接:http://codepad.org/yPhYCMFO

用户回答回答于

通常,C中的转换定义为在值上操作,而不是在表示上操作。

unsigned int u = 1234;
int i = -5678;

unsigned int result = u + i;

i的值转换为无符号int,生成UINT_MAX + 1 - 5678

扫码关注云+社区