int与unsigned int问题

luoyeqingqing 2008-03-17 03:43:57
#include <stdio.h>
#define NULL 0
int main()
{
unsigned int a=6;
int b=-20;
a+b>6?puts(">6"):puts("<=");
printf("%d,%d",a,b);
return 0;
}
打印的结果是
>6
6,-20
为什么不是
<=
6,-20
谢谢大哥大姐帮忙.................
...全文
271 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈建111 2011-09-07
  • 打赏
  • 举报
回复
当signed与unsigned参与运算时signed会自动转化成unsigned
canybox 2008-03-17
  • 打赏
  • 举报
回复

unsigned int a=6;
int b=-20;
//a+b> 6?puts("> 6"):puts(" <=");
printf("%u,%d,%d",a+b,a,b);
chengzhe 2008-03-17
  • 打赏
  • 举报
回复
楼上的弟兄们都答对了
gaoxiaowei 2008-03-17
  • 打赏
  • 举报
回复
变量类型的自动转换
一般是如下规律
char-> int-> unsigned-> long-> double

会将 signed 自动转换成 unsigned 来计算,最后得到的是一个很大的数
billy1985 2008-03-17
  • 打赏
  • 举报
回复
类型的隐式转换
星羽 2008-03-17
  • 打赏
  • 举报
回复

#include <stdio.h>
#define NULL 0
int main()
{
unsigned int a=6;
int b=-20;
(int)a+b > 6?puts("> 6"):puts(" <=");
printf("%d,%d",a,b);
return 0;
}

冰矿 2008-03-17
  • 打赏
  • 举报
回复
楼上的都说了,
变量类型的自动转换
一般是如下规律
char->int->unsigned->long->double
okhere 2008-03-17
  • 打赏
  • 举报
回复
有符号数和无符号数相加会自动转为无符号数来加
qiucp 2008-03-17
  • 打赏
  • 举报
回复
编译器会自动将signed转换为unsigned类型,所以signed的-14转成unsigned为一个很大的数。
qmm161 2008-03-17
  • 打赏
  • 举报
回复
unsigned + signed 的时候貌似会将 signed 自动转换成 unsigned 来计算,最后得到的是一个很大的数

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧