C语言中有符号和无符号数计算的问题

来源:百度知道 编辑:UC知道 时间:2024/04/28 22:15:34
当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。
但是代码中为什么直接输出a+b会等于14?

#include <stdio.h>

void main(void)
{
unsigned int a = 6;
int b = -20;

printf("%d\n", a + b);
printf("%d\n", (a + b) > 6);
(a + b > 6) ? puts("> 6") : puts("<= 6");
}

输出为:
-14
1
>6

%d 是输出带符号的10进制数
%u是输出不带符号的10进制数

pritf("%d\n",a+b) %d为输出int型,不是unsiggned int型
%ud才是unsigned int 型,好像是,也记不清楚了
其实学c 语言不必太在乎语法

你写错了一个地方
printf("%d\n", a + b); 应该是
printf("%\n", a + b);
这样输出的结果是
4294967282
显然是正确的。

pritf("%d\n",a+b) %d为输出int型