程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c語言庫函數編譯的優化

c語言庫函數編譯的優化

編輯:關於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)

怎樣輸出一個完整的浮點數

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved