temp就是最大值
不好意思,上面那个多谢了一个冒号,当时没有验证就直接写了,现在已经验证完毕:
具体代码:
#include
int
main()
{
int
a[3]
a[0]=1
a[2]=3
a[1]=2
int
temp=(((a[0]>a[1])?a[0]:a[1])>a[2]?((a[0]>a[1])?a[0]:a[1]):a[2])
printf("%d",temp)
return
0
}
当无符号0以二进制储存在内存中的时候,每一位都为0,以32位int为例,(unsigned int)0的二进制为:
00000000000000000000000000000000
按位取反(~)后,变成:
11111111111111111111111111111111
此时的十进制为:
4294967295
除以2(因为int类型中有一半表示负数且比正数多一个)之后为:
2147483647
即为32位int类型最大值。
C语言中最大的整型数据类型是long类型,占4个字节
C中短整型和整型均占2个字节,取值范围是 -32768 ~~~ 32767
长整型占4个字节,取值范围是 -2147483648 ~~~~ 2147483647
如果是无符号数的话,可以表示的数据就是
短整型和 整型: 0--- 65535
长整型: 0---4294967295
在C语言中如果一个数很大的话,超过最大的长整型,可以使用double来存储,这样不会影响运算精度。