Joe*_*Joe 18

它们都由内存中的相同位表示.这只是一个如何解释位的问题,这取决于你想要的值的范围.所以,两者都不是更密集.

至于使用数字,以乘法为例:我不是专家,但根据维基百科,在x86中有无符号乘法(mul)和有符号乘法()的操作码,imul这意味着他们可能需要相同的时间长度.


Igo*_*aka 10

这是在MS VC 2005中生成的程序集:

; 9    :    int foo = 3;

    mov DWORD PTR _foo$[ebp], 3

; 10   :    unsigned int bar = 3;

    mov DWORD PTR _bar$[ebp], 3
Run Code Online (Sandbox Code Playgroud)

没有不同 :)


Dre*_*ann 5

CPU使用率没有差异.

实际上,您几乎可以保证这些声明将编译为相同的代码.

唯一的区别是,编译器会记住这个变量是否是signedunsigned,并决定如何实施操作诸如重载函数调用比较或决定.