当前位置:天才代写 > tutorial > C语言/C++ 教程 > c语言库函数编译的优化

c语言库函数编译的优化

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:362

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

如gcc中

log2(1)会被优化成常数

可是log2(20)就会在运行时计较值

fabs会被优化成呆板(汇编)指令fabs

所以纵然你没有包括含有fabs声明的头文件也可以乐成编译运行

带有fabs函数的措施

……………………………………………………………

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

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

…………………………………………………………

C语言尺度提供了一种数据范例long long

今朝的平台上 long long是8字节的64位整数

暗示的数范畴是[-2^63, 2^63-1]

那么如何输入输出这个范例的数据呢

long long test;

scanf("%lld",&test);

printf("%lld",test);

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

可是在Windows下面

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

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

在XP+DevC++4.9下面

这个得酿成windows的非凡方法指定范例

%lld得用%I64d替换

—————————————————————

奈何读取一个double的全部内存数据

typedef union
{
double value;
struct
{
unsigned int lsw;
unsigned int msw;
} parts;
} ieee_double_shape_type;
/* Get two 32 bit ints from a double. */

#define EXTRACT_WORDS(ix0,ix1,d)
do {
ieee_double_shape_type ew_u;
ew_u.value = (d);
(ix0) = ew_u.parts.msw;
(ix1) = ew_u.parts.lsw;
} while (0)

奈何输出一个完整的浮点数

double d1;
char str1[64];
d1=0.681638760023334166733241952779893935; //36
dtoa(str1, d1, 40);
printf(" d1 = %s \r\n",str1);

—————————————————————

 

    关键字:

天才代写-代写联系方式