using uint vs int
我观察了一段时间,C程序员倾向于在任何地方使用int,很少使用uint。但我从来没有找到一个令人满意的答案。
如果您的目标是互操作性,那么uint不应该出现在公共API中,因为并非所有的cli语言都支持无符号整数。但这并不能解释为什么in t如此流行,即使是在内部类中。我怀疑这就是uint在bcl中被谨慎使用的原因。
在C++中,如果你有一个负值没有意义的整数,那么你就选择一个无符号整数。
这显然意味着不允许或不期望使用负数,编译器将为您做一些检查。我还怀疑在数组索引的情况下,JIT可以很容易地删除下限检查。
但是,在混合int和unit类型时,需要额外的注意和强制转换。
uint应该更多地使用吗?为什么?
你为什么不
是不是CLS兼容的入口位置,这意味着它是不适当的,在全部使用公共的API。如果你会使用你的私人的API单元,这意味着做其他类型的转换和它是通常更容易和更安全的感觉保持型相同。
所以,我怀疑这是不是普通#发展C,如果C是唯一的语言#主要是使用的,因为这不是普通的表达。总的来说,开发者,试图模仿的风格(thankfully)的框架,它是在建筑中的C均值#本案例,试图让你的外观和内部的公共API,AS),AS可能喜欢的。NET框架下调。这是sparingly均值使用单位。
normally
- EN is not for a公共API(since is not CLS
uint 就绪)。 - 你不需要负面的数字。
- You need the additional(might)的范围。
- 你是不是在使用它比较与
< 0 ,as that is nevertrue 。 - 你是不是在使用它比较与
>= 0 ,as that is neverfalse 。
the last is often forgotten将介绍需求和错误:P></
1 2 3 4 5 6 7 8 9 10 11 | static void Main(string[] args) { if (args.Length == 0) return; uint last = (uint)(args.Length - 1); // This will eventually throw an IndexOutOfRangeException: for (uint i = last; i >= 0; i--) { Console.WriteLine(args[i]); } } |
1)浴的习惯。说真的。甚至在C / C + +。
普通模式:
1 2 | for( int i=0; i<3; i++ ) foo(i); |
有绝对没有理由去参与有使用整数。你将永远不会有负价值。但每个人都想做一个简单的环是这样,即使它包含(至少),两个其他的"风格"的错误。
2)是由
我喜欢
我同意这是underused
我做了一个Direct3D 10封装在C # &;需要使用单位,如果我想创建一个非常大的顶点缓冲区。CAN总线在大型缓冲器的视频卡的一个代表符号的int。
单位是非常有用的&;否则可以说是愚蠢的。如果任何人认为只是因为他们从来没有需要使用单位没有人想的,你是错的。
我计划在一较低的水平,在这个很少得到应用层以上的负值100,这是不是问题(例如for i<myname.length)型(东西)这只是旧习惯和C型为一个以上的短。然而,在某些情况下,当一个硬件接口的WHERE I’M与从事件处理单元设备的旗帜,是一个重要的标志可以用在的情况下在最左位(最高)。
真的,我的工作我可以99.9%的ushort很容易使用,但int,你知道,声音的声音比ushort焊料。
我知道this is probably安老线程,但我想给一些clarification。P></
int8 lets take to You can商店安恩–128 127和1字节uses that is a total of阳性127号。当你使用安int8 is used for the one of the负位数字- 128。当你使用你给the numbers uint8消极积极allows this to the知道你正使用255号with the same amount of 1字节存储。the only have现在你看上去back is the values to the失去能力的负面使用。this is not with another问题的编程语言和数据库的支持本。你会使用this the only reason is我的意见,当你在游戏中的need to be高效编程的类,你要的号码不负大商店。this is not many为什么这个项目使用它。P></
the main reason is is not a存储问题,你不能使用它flexibly与其他数据库软件,插件,或api',for example。也会在银行的钱到商店号码需要负等。P></
希望这将帮助别人。P></
一些语言(如Pascal versions of many types)下的数值quantities Unsigned representing a as between operation;安安布尔型型signed Unsigned of the same as Will be Performed generally size操作数是促进即使the next to the some such空气日期2010年1月17型(has the为最大型语言,不知道这样的Unsigned等价,促销它将永远是可能的)。P></
其他语言(如C)下的N位Unsigned types which as a组粘贴在模2^n。subtracting笔记,从N国学院这样一组数字代表不减,but the集团成员的收益率"added to which,when is n en,会是原始的。arguably混合物一定的操作,involving Unsigned和signed values of感不真的让我和should have也许甚至是禁止的,但其草率与队列which of things like值说明文字将usually has been and written work,队列和signed types which mixes Unsigned和草率的工作,尽管有,does,that to change the规格不是任何时间很快的ATP。P></
这是很多工作easier exclusively与超时的工作比signed types of the intricacies signed Unsigned和之间的相互作用的类型。when are useful Unsigned types"个数字分解大小(例如for or for reconstituting序列化)这样的数字,但一般是更好的使用简单的数字signed to for things that其实代表的quantitiesP></
我认为一个大的部分原因是,当第一个C是输出的例子使用的
我认为它只是laziness。C是通过# A选择开发,台式机和其他机器上的资源非常多。
C和C + +,但是,安切洛蒂将在深根系统和嵌入式系统,记忆是稀疏的,所以程序员是用来认为是datatype仔细使用。# C程序员是懒惰的,因为有足够的资源,一般没有人真的optimizes(总的内存使用情况,当然不总是)。如果一个字节将是所有的事件,#很多C程序员,包括我,只是用简单的int)。此外,很多API函数接受整数,这样它可防止铸件。
我同意这是正确的选择datatype是好的做法,但我认为主要是laziness动机。
最后,选择更多的mathematically整数是正确的。无符号整型(Don’t你只存在自然数)。因为大多数程序员使用一个整数的数学背景,更多的是自然的。