Chinaunix首页 | 论坛 | 博客
  • 博客访问: 654058
  • 博文数量: 150
  • 博客积分: 4070
  • 博客等级: 中校
  • 技术积分: 1795
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-23 21:44
文章分类

全部博文(150)

文章存档

2012年(1)

2011年(123)

2010年(26)

分类: C/C++

2010-12-24 17:17:09

1. 用一个表达式,判断X是否为2的n次方,不可用循环语句?
   !X&(X-1)为真
 
2.判断一个数m的二进制中有几个1?
  void fun(int m)
 {
   int count = 0;
   while (m)
   {
     count++;
     m = m&(m-1);
   }
   cout<
 }
 
3.有两个变量a和b,不用if,"? :","switch"或其他判断语句,找出其中值较大的?
  int max = ((a+b) + abs(a-b))/2;
 
4. 不使用中间变量交换a和b的值?
   方法一:a = a+b; b = a - b; a = a - b; 但这种情况可能因为a,b的值太大,导致a+b超界
   方法二:a = a^b; b = a^b;  a = a^b;
 
5.C++程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
 
  答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为: void foo(int x, int y);该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了C连接交换指定符号externC”来解决名字匹配问题。
 
 
 
 
 
 
阅读(465) | 评论(0) | 转发(0) |
0

上一篇:转义字符

下一篇:预处理命令

给主人留下些什么吧!~~