Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26486
  • 博文数量: 6
  • 博客积分: 135
  • 博客等级: 入伍新兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-09 15:51
文章存档

2011年(6)

我的朋友

分类: LINUX

2011-09-18 19:50:55

       当看到位向量可以表示有限集合时,不清楚它究竟有什么用?于是上网搜,网上说,可以用它来求一个子集的所有子集。于是我举了个简单的例子,并用程序实现了。代码如下:
  1.  /* 求集合{0, 1, 2,……, 7}的所有子集 */ 
  2. #include <stdio.h> 
  3. void main()
  4.  
  5.       int a, i;
  6.       for( a = 0; a < 255 ; a )
  7.          {
  8.             for( i = 0; i <= 7; i )
  9.                {
  10.                  if( (a >> i) & 1 )
  11.                    {
  12.                       printf ( "-", i );
  13.                    }
  14.                }
  15.             printf ( "\n\n" );
  16.          }
  17.   }

     在头文件limits.h中,定义INT_MAX和INT_MIN如下:

      #define INT_MAX 2147483647
  1.      #define INT_MIN (-INT_MAX - 1)
  2.       问题是:为什么不简单地写成-2147483648?
  3.       通过网上查得原因如下:
  4.       整数常量的定义:以数字开始,并且不包含小数点或指数部分,它可能包含一个表示进制的前缀以及表示类型的后缀。
  5.       根据整数常量的定义知,-2147483648不是常量,而是常量表达式。它超出了32位有符号整数的范围,所以它要么被当成unsigned long int ,要么被当成long long int。
阅读(1266) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~