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的检查稍微严格了一些。
希望回答对你有帮助。