c语言库函数编译的优化
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)