Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1209391
  • 博文数量: 232
  • 博客积分: 7563
  • 博客等级: 少将
  • 技术积分: 1930
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-21 11:17
文章分类

全部博文(232)

文章存档

2011年(17)

2010年(90)

2009年(66)

2008年(59)

分类:

2010-10-06 10:49:49

  1. 用一个表达式,判断一个数X是否是2^N次方(2,4,8,16……),不可用循环语句。
    解析:从2,4,8,16的二进制入手,转成二进制为10,100,1000,10000,可以看出如果X减1后与X做与运算,答案若是0则为2^N。故答案为:!(X&(X-1))
  2. There are two int variables: a and b, don't use "if","?:","switch" or other judgement statements, find out the biggest one of the two numbers.
    解析:1. int max=((a+b)+abs(a-b)))/2;
          2.   int c=a-b;  char* strs[2]={"a大","b大"};   c=unsigned(c)>>(sizeof(int)*8-1);
  3. 如何将a.b交换,而不采用任何中间变量?
    解析:a=a^b; b=a^b;a=a^b;
  4. 用一个宏定义FIND求一个结构体struc里某个变量相对于struc的偏移量。
    struct student
    {
      int a;
      char b[20];
      double ccc;
    }
     则FIND(student,a);//等于0
       FIND(student,b);//等于4
    答:#define FIND(struc,e) (size_t)&(((stuc*)0)->e)
  5. 用预处理指令#define声明一个常量,用以表明1年中有多少秒(忽略闰年问题)。
    答:#define SECONDS_PER_YEAER (60*60*24*365)UL 
  6. 写一个标准宏MIN,这个宏输入两个参数并返回较小的一个。
    答:#define MIN(a,b) (a+b-abs(a-b)) 或    #define MIN2(a,b) (aa:b)
  7. What does the keyword "const" mean in C program ? Please at least make two examples about the usages of const.
    答:在C程序中,const的用法主要有定义常量,修饰函数参数,修饰函数返回值等3个用处。在C++中,它还可以修饰函数的定义体,定义类中某个成员函 数为恒态函数,即不改变类中的数据成员。被const修饰的东西都受到强制保护,可以预防意外的变动,提高程序的健壮性。
  8. const与#define相比有什么不同?
    答:C++可以用const定义常量,也可以用#define定义常量,但是前者比后者有更多优点:
        (1)const常量有数据类型,而宏常量没有数据类型。编译器会对前者进行类型安全检查,而对后者只是字符替换,没有类型安全检查,并且在字符替换中,可能会产生意料不到的错误(边际效应)。
        (2)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试,在C++中只能使用const常量而不能使用宏常量,即const常量可以取代宏常量。
阅读(1009) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~