当看到位向量可以表示有限集合时,不清楚它究竟有什么用?于是上网搜,网上说,可以用它来求一个子集的所有子集。于是我举了个简单的例子,并用程序实现了。代码如下:
- /* 求集合{0, 1, 2,……, 7}的所有子集 */
- #include <stdio.h>
- void main()
- {
- int a, i;
-
for( a = 0; a < 255 ; a )
-
{
-
for( i = 0; i <= 7; i )
- {
-
if( (a >> i) & 1 )
-
{
-
printf ( "-", i );
-
}
-
}
- printf ( "\n\n" );
-
}
-
}
在头文件limits.h中,定义INT_MAX和INT_MIN如下:
#define INT_MAX 2147483647- #define INT_MIN (-INT_MAX - 1)
- 问题是:为什么不简单地写成-2147483648?
- 通过网上查得原因如下:
- 整数常量的定义:以数字开始,并且不包含小数点或指数部分,它可能包含一个表示进制的前缀以及表示类型的后缀。
- 根据整数常量的定义知,-2147483648不是常量,而是常量表达式。它超出了32位有符号整数的范围,所以它要么被当成unsigned long int ,要么被当成long long int。
阅读(1269) | 评论(0) | 转发(0) |