如何在C中将变量设置为等于无穷大(或任何有保证的最大数值)?
发布于 2010-02-16 23:29:16
#include <limits.h>
int x = INT_MAX;
编辑:在提问者澄清之前回答了,我只是在猜测他们想要什么类型。
发布于 2010-02-16 23:28:35
有一个名为limits.h的文件(至少在Linux上是这样的),它包含这种定义,例如
/* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */
# define USHRT_MAX 65535
/* Minimum and maximum values a `signed int' can hold. */
# define INT_MIN (-INT_MAX - 1)
# define INT_MAX 2147483647
/* Maximum value an `unsigned int' can hold. (Minimum is 0.) */
# define UINT_MAX 4294967295U
发布于 2015-10-04 18:34:09
另一种获取整数最大值的便携方法:
无符号整数
unsigned int uMax = (unsigned int)~0;
有符号整数
signed int iMax = (unsigned int)~0 >> 1;
解释
将所有位设置为无符号整数擦除符号位,方法是将所有位向右移位一次position
(unsigned int)
类型转换为无符号整数,而不是使用~0U
,因为C没有缩写的后缀,字符文字(通常都小于int )因此,为了获得最大的char
值,只需将公式类型转换为无符号字符,依此类推。
Bonus -有符号整型的最小值
只需在最大有符号整型表达式中再次反转所有位:
signed int iMin = ~((unsigned int)~0 >> 1);
这将第一个符号位设置为1,其余位设置为0
https://stackoverflow.com/questions/2273913
复制相似问题