请看下面的程序,其执行结果为什么是:>6,请说明下原因,谢谢!~
#include <stdio.h>

int main()
{
unsigned int a=6;
int b=-20;
if (a+b>6)
{
printf(">6"

展开全部
收起
10回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Sarah

    19人对此回答表示赞同

    a+b默认返回的是无符号数,b转化为无符号数与a相加,一定是>0
    展开
    19
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Jayla

    18人对此回答表示赞同

    a + b = 4294967282 (一个大数,一般由溢出值决定)
    就像 String + int 一个道理, 低类型向高类型自动转换, 而int 的-20 二进制表示为 1XXXXX..XX,第一位为1表示这是一个负数,但unsigned 则无视正负,只取这个值,那么它自然就很大了。
    建议你去学习下 二进制补码和二进制计算,就能根据 int 所占的字节数,正确估计出a+b的结果来。
    展开
    18
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 世事秋凉

    16人对此回答表示赞同

    在运算时,int型被强制转换为unsigned型,int b=-23,二进制码是11101100,被转换成unsigned型以后,unsigned b=11101100,即b=236,那么a+b=6+236=242,肯定大于6,所以if条件为真,输出>6
    展开
    16
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 胡歌是我哥

    12人对此回答表示赞同

    unsigned int与int型混合运算,会自动转型为unsigned,-20会变成一个很大正数
    展开
    12
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Jina金呐

    7人对此回答表示赞同

    unsigned int 类型与int类型运算,会将int隐式转换为unsigned类型于是-20就是一个非常大的正整数。
    展开
    7
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Foster

    5人对此回答表示赞同

    a+b在计算的时候是unsigned int 和int 相加,int 在计算前转换成了unsigned int,编程了一个超大的整数4294967276,加上6之后也没有溢出,所以结果就大于6了

    你可以试试printf("%u\n",-20);
    展开
    5
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 花朵之蓝

    4人对此回答表示赞同

    长见识了 追问
    展开
    4
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 在劫难逃

    3人对此回答表示赞同

    是隐式转化造成的 ,unsigned int 类型与int类型相加时,编译器会进行隐式转换,将int类型转换为unsigned int类型的整数,然后再相加,结果就造成你的程序中a+b实际结果是一个很大的数,
    打印出的结果就和你预期的不一样了。
    你可以先进行类型统一的转换再运算就不会出现这种问题了。
    展开
    3
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 张三筒

    2人对此回答表示赞同

    unsigned int 类型与int类型运算,会将int隐式转换为unsigned类型于是-20就是一个非常大的正整数。自然就会大于6。
    展开
    2
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Shyanne

    1人对此回答表示赞同

    2^32=4 294 967 296
    a+b=4 294 967 296 -14=4294967282>6
    这里的a是unsigned型
    展开
    1
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部