2010.3.25

1>添加環境變量    export PATH = $PATH:`pwd`

    如果此時關閉終端,所設的環境變量將失效;另外可以直接修改用戶目錄下的.bashrc文件,接着關閉終端重啓即可。

2>GCC 使用

    GCC的編譯流程分爲4個步驟:1】預處理(PreProcessing)2】編譯(Compiling)3】彙編(Assembling)4】連接    

    (Linking);

    1.預處理,生成.i的文件[預處理器cpp]
    2.將預處理後的文件轉換成彙編語言,生成文件.s[編譯器egcs]
    3.有彙編變爲目標代碼(機器代碼)生成.o的文件[彙編器as]
    4.連接目標代碼,生成可執行程序[鏈接器ld]

 
    $gcc -E test.c -o test.i                              -E激活預處理

 

     檢查語法錯誤,並生成彙編文件                      -S激活預處理和編譯,就是指把文件編譯成爲彙編代碼。

     $gcc -S test.c -o test.s                             對於研究程序效率是非常有幫助的。

3>Makefile

     變量定義的兩中方式

     遞歸展開方式 VAR= var    可以向後引用變量但不能對變量進行任何擴展 如 CFLAGS = $(CFLAGS) -O就成了死循環

     簡單方式  VAR:=var         會在變量的定義點按照被引用的變量的當前值展開 如CFLAGS=cc; CFLAGS:=$(CFLAGS) -O就不會造成

                                           死循環。

     用?=定義變量                  查找前面是否已定義次變量 如 dir:=/foo/bar     

                                                                                      FOO?=bar

                                            含義是,如果FOO沒有被定義過,那麼變量FOO的值就是bar,反之,這條語句將什麼也不做,其等價於:

                                            ifeq($(origin FOO),undefined)

                                            FOO = bar

                                            endif

4>autotools工具的使用

   

 

5>編寫程序,從鍵盤上輸入2個整數,分別計算出它們的商和餘數,輸出時,商數要求保留2位小數,並對第3位進行四捨五入。

    int main(void)

    {

          int x,y;

          scanf("%d,%d",&X,&y);

          printf("%5.2f",(double)x/y,x%y);

          return 0;

    }  

     這裏我們要弄清楚一個原則:當一個運算符兩端的運算量類型不一致時,按“向高看齊”的原則對“較低”的類型進行提升。

這道題目如果我們改寫成下面的語句:

           2】printf("%5.2f",(double)(x/y,x%y));

將會發現運算結果發生了變化。其原因是因爲(double)x/y先將x強制轉換爲double型,接着x/y根據向高看齊原則,x/y爲double/double;再看2】中的(double)x/y,是先將x/y取整,再將所得到的整數強制轉換爲double型,因此我們在處理數據時要十分小心使用括號。  

發佈了18 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章