当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 一个基于对话框的应用程序,在对话框主窗口创建完成并最终显示在屏幕的中心后,希望紧接着进行某些用户自定义的操作----如获得对话框主窗口的坐标,那么应该重载哪个函数,在其中添加用户操作呢? 原先是重载对话框主窗口的oninitdialog函数,但是发现此时获得的对话框的左上点坐标竟然是(0,0),而不是创建完成后显示在屏幕中央的位置,应用程序框架在调用完oninitdialog后应该又将窗口......
    摘要: 怎样用c#开发自己的datagrid的web组件,让datagrid功能更强大~~ 读过gaurav vaish & andreas nahr的一段源码,不过一头雾水~~ ......


面试题目,大家看啊

#define   ABC(i)   (i<=0?i:-i)  
   
  int   main   ()  
  {  
          int   j   =1;  
          int   asn;  
          asn   =   ABC(--j);       //++j/j++/j--这几个可以用!为什么啊?  
          printf("%d\n",sun);  
  }  
  --------------------------------------------------------------------------//为什么++j的结果是-3啊!谁能解释一下  
  而面试的时候就这样的题目我写的是结果是sun   =-1;而运行下来不能运行啊!怎么搞的!

NO.1   作者: compboy1

sun   是不是应该为asn呀?  
   
  #define   ABC(i)   (i<=0?i:-i)  
   
  int   main   ()  
  {  
  int   j   =1;  
  int   asn;  
  asn   =   ABC();   //这样就可以了!  
  printf("%d\n",sun);  
  }

NO.2   作者: compboy1

sun   是不是应该为asn呀?  
   
  #define   ABC(i)   (i<=0?i:-i)  
   
  int   main   ()  
  {  
  int   j   =1;  
  int   asn;  
  asn   =   ABC();   //这样就可以了!  
  printf("%d\n",sun);  
  }

NO.3   作者: AOM

(i<=0?i:-i)  
  ????

NO.4   作者: TrueSmart

结果为0吧?

NO.5   作者: arfi

#define   ABC(i)   (i<=0?i:-i)改成  
  #define   ABC(i)   (i<=0?i:-(i))就可以运行了。  
   
  这样的话asn   =   (--j<=0?   --j:   -(--j));  
   
  什么公司出这样的题目,程序员的大忌!  
 

NO.6   作者: RainWindy

又是这一类题。

NO.7   作者: TianGuangZao

gcc   下结果为   -1.  
  这样的宏定义简直是噩梦,<<c语言缺陷和陷阱>>   里面有详细的讲解。  
  宏和函数不同,它只是将文本在指定位置展开。  
  以下是我的一些看法:  
  #define   ABC(i)   (i<=0?i:-i)  
  首先了解一下该宏的意图:负数或   0   保持该数不变,正数取该数相反数。  
  给每个参数加上括号是最基本的要求。  
  如:ABC(j+k)    
  展开后就是:   j+k<=0?j+k:-j+k  
  完全是另外一个意思了。  
  应该改成   #define   ABC(i)   ((i)<=0?(i):(-(i)))  
   
  ABC(--j);   之类的会在条件运算符两边都出现的同一个变量,避免用   define,改用函数。  
   
  结果为   -1   ,   估计是这样的。  
  展开后   --j<=0?--j:---j;  
  先计算左边   j   =   1   -->   j   =   0   满足条件   <=0;  
  计算冒号前表达式   --j   -->   j   =   -1.  
  只是猜测。  
   
   
 

NO.8   作者: Hot_Forever

++j时候  
  asn   =(++j<=0?   ++j:-(++j));//1加了2遍就等于3了啊,后面有负号就是-3  
  --j时候   同理把宏展开就行了

NO.9   作者: jianshen77

宏运算就是替代,所以  
        asn   =   ABC(--j);        
        就因改是:  
        asn=(--j<=0?--j:---j);  
        --j--->0;  
        --j--->-1;  
 

NO.10   作者: doer_ljy

++j当然是-3了!  
  ABC的宏,我们还原一下!  
  ABC((++j))   等价   (++j)<=0?(++j):-(++j)  
  看看j一共被加了几次?  
  是两次!  
  1+2很简单吧?  
   
 


 ·vugen 录制c/s结构的脚本问题    »显示摘要«
    摘要: 我现在用lr的wugen录制c/s结构的应用程序,程序为用com+部署,数据库为sql server。我要测试应用程序的性能而录制脚本,但是我现在用socket,com/dcom等协议都录制不了脚本,谁给讲讲到底应该怎么录制啊???要作什么设置吗,如端口什么的? ......
» 本期热门文章:
· 热门栏目:
» 相关精选文章
» 其它相关:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE