黑马程序员技术交流社区

标题: usigned代表无符号,为什么最后能输出“—”号? [打印本页]

作者: 马志华    时间: 2014-12-14 13:50
标题: usigned代表无符号,为什么最后能输出“—”号?
  1. #include <stdio.h>

  2. int main()
  3. {   signed int y = -12;
  4.     signed t =-10;
  5.     unsigned int p = -12;
  6.     unsigned q =-10;
  7.    

  8.     printf("%d\n",y );
  9.     printf("%d\n",t );
  10.     printf("%d\n",p );
  11.     printf("%d\n",q );
  12.    
  13.     return 0;
  14. }
复制代码



打印出的结果是:-12
                                -10
                                -12
                                -10
作者: 马志华    时间: 2014-12-14 13:57
  1. #include <stdio.h>

  2. int main()
  3. {   signed int y = -12;
  4.     signed t =-10;
  5.     unsigned int p = -12;
  6.     unsigned q =-10;
  7.    

  8.     printf("%d\n",y );
  9.     printf("%d\n",t );
  10.     printf("%u\n",p );
  11.     printf("%u\n",q );
  12.    
  13.     return 0;
  14. }
复制代码


打印出的结果是:-12
-10
4294967284
4294967286

但是没有报错,还是不对啊
作者: 马志华    时间: 2014-12-14 14:00
  1. #include <stdio.h>

  2. int main()
  3. {   signed int y = -12;
  4.     signed t =-10;
  5.     unsigned int p = 12;
  6.     unsigned q =10;
  7.    

  8.     printf("%d\n",y );
  9.     printf("%d\n",t );
  10.     printf("%u\n",p );
  11.     printf("%u\n",q );
  12.    
  13.     return 0;
  14. }
复制代码



打印的结果是:-12
-10
12
10
打印的结果正常,但是前面在unsigend后面加了负号应该报错的啊!
作者: 杨贺阳    时间: 2014-12-14 15:07
编译连接都没问题,为什么报错?只是结果会不是你想要的而已,比如  int a =‘A’; 可能本意是想让a的值是字符A,但是定义成了int类型,这样也不会报错吧,只是结果a的值是65而已。
作者: se7ven    时间: 2014-12-15 17:31
你是按有符号打印的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2