亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁(yè) | 考試用書(shū) | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
      全國(guó)  |             |          |          |          |          |         
        當(dāng)前位置:計(jì)算機(jī)等級(jí) > 二級(jí)考試 > C語(yǔ)言程序設(shè)計(jì) > C語(yǔ)言輔導(dǎo) > 文章內(nèi)容
        

      全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言入門(mén)教程(127)

      中華IT學(xué)院   【 】  [ 2016年11月1日 ]

      對(duì)文件包含命令還要說(shuō)明以下幾點(diǎn):

      1. 包含命令中的文件名可以用雙引號(hào)括起來(lái),也可以用尖括號(hào)括起來(lái)。例如以下寫(xiě)法都是允許的:#include"stdio.h"
      #include 但是這兩種形式是有區(qū)別的:使用尖括號(hào)表示在包含文件目錄中去查找(包含目錄是由用戶在設(shè)置
      環(huán)境時(shí)設(shè)置的), 而不在源文件目錄去查找; 使用雙引號(hào)則表示首先在當(dāng)前的源文件目錄中查找,若未找到才到包含
      目錄中去查找。 用戶編程時(shí)可根據(jù)自己文件所在的目錄來(lái)選擇某一種命令形式。
      2. 一個(gè)include命令只能指定一個(gè)被包含文件, 若有多個(gè)文件要包含,則需用多個(gè)include命令。3. 文件包含允許
      嵌套,即在一個(gè)被包含的文件中又可以包含另一個(gè)文件。
      條件編譯

      預(yù)處理程序提供了條件編譯的功能。 可以按不同的條件去編譯不同的程序部分,因而產(chǎn)生不同的目標(biāo)代碼文件。 這
      對(duì)于程序的移植和調(diào)試是很有用的。 條件編譯有三種形式,下面分別介紹:

      1. 第一種形式:
      #ifdef 標(biāo)識(shí)符
      程序段1
      #else
      程序段2
      #endif


      它的功能是,如果標(biāo)識(shí)符已被 #define命令定義過(guò)則對(duì)程序段1進(jìn)行編譯;否則對(duì)程序段2進(jìn)行編譯。如果沒(méi)有程序
      段 2(它為空),本格式中的#else可以沒(méi)有, 即可以寫(xiě)為:


      #ifdef 標(biāo)識(shí)符
      程序段 #endif
      #define NUM ok
      main(){
      struct stu
      {
      int num;
      char *name;
      char sex;
      float score;
      } *ps;
      ps=(struct stu*)malloc(sizeof(struct stu));



      ps->num=102;
      ps->name="Zhang ping";
      ps->sex='M';
      ps->score=62.5;
      #ifdef NUM
      printf("Number=%d\nScore=%f\n",ps->num,ps->score);
      #else
      printf("Name=%s\nSex=%c\n",ps->name,ps->sex);
      #endif
      free(ps);
      }


      由于在程序的第16行插入了條件編譯預(yù)處理命令, 因此要根據(jù)NUM是否被定義過(guò)來(lái)決定編譯那一個(gè)printf語(yǔ)句。
      而在程序的第一行已對(duì) NUM作過(guò)宏定義,因此應(yīng)對(duì)第一個(gè) printf語(yǔ)句作編譯故運(yùn)行結(jié)果是輸出了學(xué)號(hào)和成績(jī)。在程序
      的第一行宏定義中,定義 NUM表示字符串OK,其實(shí)也可以為任何字符串,甚至不給出任何字符串,寫(xiě)為: #define NUM
      也具有同樣的意義。 只有取消程序的第一行才會(huì)去編譯第二個(gè) printf語(yǔ)句。讀者可上機(jī)試作。

      2. 第二種形式:
      #ifndef 標(biāo)識(shí)符
      程序段 1
      #else
      程序段 2
      #endif

      與第一種形式的區(qū)別是將“ifdef”改為“ifndef”。它的功能是,如果標(biāo)識(shí)符未被#define命令定義過(guò)則對(duì)程序段 1
      進(jìn)行編譯, 否則對(duì)程序段 2進(jìn)行編譯。這與第一種形式的功能正相反。

      3. 第三種形式:
      #if 常量表達(dá)式
      程序段 1
      #else
      程序段 2
      #endif


      它的功能是,如常量表達(dá)式的值為真(非0),則對(duì)程序段1 進(jìn)行編譯,否則對(duì)程序段2進(jìn)行編譯。因此可以使程序在
      不同條件下,完成不同的功能


      #define R 1
      main(){
      float c,r,s;
      printf ("input a number: ");
      scanf("%f",&c);
      #if R
      r=3.14159*c*c;
      printf("area of round is: %f\n",r);
      #else
      s=c*c;
      printf("area of square is: %f\n",s);
      #endif
      }


      本例中采用了第三種形式的條件編譯。在程序第一行宏定義中,定義 R為1,因此在條件編譯時(shí),常量表達(dá)式的
      值為真, 故計(jì)算并輸出圓面積。上面介紹的條件編譯當(dāng)然也可以用條件語(yǔ)句來(lái)實(shí)現(xiàn)。 但是用條件語(yǔ)句將會(huì)對(duì)整個(gè)源
      程序進(jìn)行編譯,生成的目標(biāo)代碼程序很長(zhǎng),而采用條件編譯,則根據(jù)條件只編譯其中的程序段1或程序段2,生成的
      目標(biāo)程序較短。如果條件選擇的程序段很長(zhǎng), 采用條件編譯的方法是十分必要的。

      分享到:
      本文糾錯(cuò)】【告訴好友】【打印此文】【返回頂部
      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問(wèn)考試網(wǎng) | 復(fù)制本頁(yè)地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見(jiàn)留言 TOP
      關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
      Copyright © 2006-2017 中華考試網(wǎng)(Examw.com) All Rights Reserved  營(yíng)業(yè)執(zhí)照