第4个回答 2021-11-01
错在: 输出结果 与 printf 用的 “输出格式” 定义 有关, 与 数值 大小 也有关。
例如,输出 unsigned int x = 0xffffffff; 这里 x 是无符号变量
printf("format u = %u\n", x); //这个输出 4294967295
printf("format d = %d\n", x); //这个输出 -1 (负数)
例如,输出 unsigned int y = 0x8fffffff;
printf("format u = %u\n", y); //输出 2415919103
printf("format d = %d\n", y); //输出 -1879048193 (负数)
例如,输出 unsigned int z = 0; 将输出 0
当数值在一定情况下,会输出 负数 和 0。所以,不一定是正数。