signed 和 unsigned

来源:互联网 发布:c#windows窗体应用程序 编辑:程序博客网 时间:2024/05/14 02:52

 

在编程的时候,会不小心把unsigned和signed类型一起混用 ,这样往往会出现问题,如下所示:

   unsigned int i=1;
   int j= -1;
   if (i>j) printf("i>j/n");
   else printf("i<=j/n");

程序会输出:i <=j;编译器会默认的将有符号数据转化无符号数据。因此,本来应该是-1的有符号数变成了2^31 - 1的无符号数。所以结果就与预期输出不符了.

  所以,以后再比较两个数时,需要首先考虑这两个数的数据类型是否相同。不同时,需要人为转换。这样才不会出现上述错误。

原创粉丝点击