了解签名扩展

nik*_*kel 3 c

int main()
{
  unsigned int b;
  signed int a;
  char z=-1;
  b=z;
  a=z;
  printf("%d %d",a,b);
}
Run Code Online (Sandbox Code Playgroud)

给-1 -1.为什么没有符号扩展,也就是它何时发生?

pro*_*rmr 10

发生签名扩展DID,但您正在错误地打印结果.在您指定的printf %db,但是b未签名,您应该习惯于%u打印b.

printf不知道其参数的类型,并使用format指定来解释它们.

printf("%d %u",a,b);
Run Code Online (Sandbox Code Playgroud)