首先参考博客 ​​C语言:基本数据类型及表示范围 - myrj -

c/c++常见的数据类型表示的范围_编译器

这里有个疑问,int和long到底什么区别:

看了一些博客:

​在C+中,int和long有什么区别?​

​C和C++中int和long有什么区别? - 知乎​

答案:

取决于平台(但是有个规定,long 至少 >= int)

Windows平台(无论32/64位的系统,机器,比编译器):int跟long是一样的,都是占4个字节。

Unix系统平台:int是32位,long就是64位的。

有些8/16位单片机:int甚至只是16位的而已。

关于有符号无符号等混合运算问题,看我这个博客:

​​C语言中有无符号类型转换和截断问题,很容易入坑!!!_我是标同学的博客类型截断​​

只要 同符号类型 变量(变量类型大小不影响)之间运算,一定没有问题

如果是混合符号类型变量之间的运算,那么我们显式的指定强制转换,防止编译器隐式的进行转换,从而运算结果不是我们的预期结果。