jake1036

面试宝典总结贴

             面试宝典 系列(一)

 1 形如 !x++ 的计算顺序,若在条件判断中,则需要首先判断(!x)的true或者false,然后需要执行x++。
 2 printf 函数的执行顺序是由右至左。代码如下:
   

int main()
 
{
   
int b = 3 ;
   
int arr[] = {6,7,8,9,10} ;
   
int * ptr = arr ;
   
*(ptr+++= 123 ;  //实质上与 *ptr++ += 123 效果一样 
   printf("%d,%d\n" , *ptr ,*(++ptr)); //printf的执行顺序是 由右至左 
   system("pause"); 
    
return 0 ;   
 }
 

 


       printf()函数的参数,在printf()函数读取时是从左往右读取的,然后将读取到的参数放到栈里面去。
      最后读取到的就放在栈顶,处理参数的时候是从栈顶开始的,所以是从右边开始处理的.--printf()函数的特点。

      注意点:

         1.printf()函数中的计算是从右向左进行的。
         2.我们在写代码时,尽量避免无确定意义的表达式出现,因为不同的编译器,可能会采用不同的理解方式。
         3 *ptr++ ,*++ptr 之间的区别。*ptr++ 表示先取值,后++ ,效果同*(ptr++)。  *++ptr 表示ptr的值先自增,然后再取值。
  
  3  float f = 1.0  (int )f 与 (int &) 之间的区别:
      int & 表示,把float在内存中的变量的前sizeof(int)个字节,当做int类型的数字输出。

  4 判断一个数是否是2的N次方(2,4,8,16),不需要使用循环操作。
     注意这些数都是0010 ,0100 ,1000,10000,A&(A-1) 结果必然为0,可以使用这种方法判断。
  
 5 求a , b的最大值 
    max = ((a + b) + abs(a  -b)) / 2
 6 交换 a b 的值
     a = a ^ b 
     b = a ^ b 
     a = a ^ b
  
     

                

posted on 2011-05-11 19:53 kahn 阅读(487) 评论(0)  编辑 收藏 引用 所属分类: c++学习总结


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理