当前位置:主页   - 电脑 - 程序设计 - C/C++
c语言库函数编译的优化
来源:网络   作者:   更新时间:2012-03-06
收藏此页】    【字号    】    【打印】    【关闭

  c语言的有些库函数会在编译的时候被优化

  如gcc中

  log2(1)会被优化成常数

  但是log2(20)就会在运行时计算值

  fabs会被优化成机器(汇编)指令fabs

  所以即使你没有包含含有fabs声明的头文件也可以成功编译运行

  带有fabs函数的程序

  .....................................................................

  (int&)a和*((int*)&a)是一样的

  把&a这个地址上32位数看作int型

  ..................................................................

  C语言标准提供了一种数据类型longlong

  目前的平台上longlong是8字节的64位整数

  表示的数范围是[-2^63, 2^63-1]

  那么如何输入输出这个类型的数据呢

  longlongtest;

  scanf("%lld",&test);

  printf("%lld",test);

  在gcc4+Linux(2.6.15)下面,这样的输入输出是没有问题的

  但是在Windows下面

  一些老的编译器,这样的代码是没法正确工作的

  原因是C-Runtime-Library不支持这个参数

  在XP+DevC++4.9下面

  这个得变成windows的特殊方式指定类型

  %lld得用%I64d替换

  ----------------------------------------------------------------------

  怎样读取一个double的全部内存数据

typedefunion
{
 doublevalue;
 struct
 {
  unsignedintlsw;
  unsignedintmsw;
 }parts;
}ieee_double_shape_type;
/*Gettwo32bitintsfromadouble. */
#defineEXTRACT_WORDS(ix0,ix1,d)  
do{    
 ieee_double_shape_typeew_u;  
 ew_u.value=(d);   
 (ix0)=ew_u.parts.msw;  
 (ix1)=ew_u.parts.lsw;  
}while(0) 

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明