您的当前位置:首页正文

unsigned int 和int

来源:九壹网

 我看到许多项目里的代码中,许多结构中的成员其实根本不可能是负值,但是仍然声明为int。unsigned int很少使用。请问这是使用习惯问题么?或者是和C语言兼容?或者是运行速度?或其他?

 

 

 


 

 

 


 

 

 

编程论坛 1 个网友回答:

 

 
 变量声明不严格辈!
 
 就像该用const的地方必须用.不该用的地方不要乱用!

 

 

 

 

 


 

 

 

编程论坛 2 个网友回答:

 

他们的区别是一个有符号和一个无符号,数值的大小不一样

 

 

 

 

 


 

 

 

编程论坛 3 个网友回答:

 

有一句话:优先使用int。
有符号数与无符号数的运算,其规则和结果很可能出乎你的意料的。
最好找本《C语言大全》看看。

 

 

 

 

 


 

 

 

编程论坛 4 个网友回答:

 

其实,unsigned 和一般的基本数据类型有很大区别,这也正是好多公司在面试时都会测试的原因.可以去参考
一下《C专家编程》.

 

 

 如果确认一个变量不可能是负值还是应该声明成unsigned。

 

 

 

 

 


 

 

 

编程论坛 6 个网友回答:

 

同样关注此问题, 另外再加两个问题:-)

1. 有些变量肯定不会落在0~255之外, 可以使用BYTE(unsigned char), 有很多也使用了int.
2. 有些用short就可以的地方, 也是使用了int.

是为了将来的扩展性吗?

 

 

 

 

 


 

 

 

编程论坛 7 个网友回答:

 

6楼,我觉得这两个问题的主要原因应该都是考虑到效率吧。通常int是32位的,32位系统下效率最高。可能还有对齐的原因。

谢谢上面推荐的书籍,我去研究一下……

 

 

 

 

 


 

 

 

编程论坛 8 个网友回答:

 

想用一个很有名的面试题来回答你的问题:

void foo(void)
{
  unsigned int a = 6;
  int b = -20;
  (a+b > 6) ? puts("> 6") : puts(" <= 6");
}
   这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是 ">6"。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式 计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。

 

 

 

欢迎转载,但请保留出处,本文章转自[华软网] 原文链接:

 

 


 

 

 

 


欢迎转载,但请保留出处,本文章转自[华软网] 原文链接:

因篇幅问题不能全部显示,请点此查看更多更全内容

Top