c语言 unsigned int

Python012

c语言 unsigned int,第1张

unsigned

int类型相加的情况。

没有强制转换。

UINT+UINT

INT+INT

UINT+INT

对于加法器(CPU内部)

是完全相同的。Computer的设计者非常巧妙的统一了他们:

使用反码代替负数。

(32位INT情况下)

-1

0xFFFFFFF

是物理等价的。

-2

0xFFFFFFE

是物理等价的。

(-1)+(-2)

加法器回答是

0xFFFFFFF

+

0xFFFFFFE

=

0xFFFFFFFD

和(-3)是物理等价的。

所以关键是结果是什么类型,而不是2个输入是什么类型。

加法减法都没有问题。但是比较大小必须注意要同类。要看编译器了。

没有本质上的区别。

void main() 这么定义只是说明main函数没有返回值。

int main(void)和int main()是一样的,括号里没有东西就相当于void,只是说明main函数有一个int类型的返回值。

C语言的规范里面要求main函数需要返回一个int类型的返回值来告诉操作系统这个程序是执行正确还是执行错误。执行正确返回0,执行错误返回非0。但是目前操作系统都不去判断这个返回值,所以你写成void main()还是int main()其实是一样的,没有什么区别。不过既然有规范,还是推荐写成int main()这种形式。

对于C和C++来说还有一点区别。C++加强了C的一些检查,我们知道C语言是弱类型的语言,编译检查没有那么严格。C++其实也是弱类型的语言(相对于java、c#这些高级语言),但是比C的检查稍微严格了一些。

希望回答对你有帮助。