青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

life02

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  197 隨筆 :: 3 文章 :: 37 評(píng)論 :: 0 Trackbacks

http://blog.csdn.net/yysdsyl/archive/2007/12/30/2005232.aspx
另一個(gè)筆試版本

1,題:請(qǐng)定義一個(gè)宏,比較兩個(gè)數(shù)a,b的大小,不能使用大于、小于、if語(yǔ)句。

     答案:#define Max(a,b)  (a/b)?a:b

相關(guān):

(1)在C語(yǔ)言源程序中允許用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)字符串,稱(chēng)為“宏”。被定義為“宏”的標(biāo)識(shí)符稱(chēng)為“宏名”。在編譯預(yù)處理時(shí),對(duì)程序中所有出現(xiàn)的“宏名”,都用宏定義中的字符串去代換,這稱(chēng)為“宏代換”或“宏展開(kāi)”。

(2)宏定義是由源程序中的宏定義命令完成的。宏代換是由預(yù)處理程序自動(dòng)完成的。

(3)在C語(yǔ)言中,“宏”分為有參數(shù)和無(wú)參數(shù)兩種。

(4)無(wú)參數(shù)宏定義

          一般形式:   #define  標(biāo)識(shí)符 字符串

          其中的“#”表示這是一條預(yù)處理命令。凡是以“#”開(kāi)頭的均為預(yù)處理命令。“define”為宏定義命令。“標(biāo)識(shí)符”為所定義的宏名。“字符串”可以是常數(shù)、表達(dá)式、格式串等。比如說(shuō)符號(hào)常量的定義就是一種無(wú)參宏定義。此外,常對(duì)程序中反復(fù)使用的表達(dá)式進(jìn)行宏定義。例如:# define M   (y*y+3*y),定義M為表達(dá)式(y*y+3*y),在編寫(xiě)源程序時(shí),所有的(y*y+3*y)都可由M代替,而對(duì)源程序做編譯時(shí),將先有預(yù)處理程序進(jìn)行宏代換,即用(y*y+3*y)表達(dá)式去置換所有的宏名M,然后再進(jìn)行編譯。

            例子:

                             #   define M (y*y+3*y)

                             main(){

                                  int s,y;

                                  printf ("input a number:")

                                  scanf("%d",&y);

                                  s=3*M+4*M+5*M;

                                  printf("s=%d\n",s);

                             }

             注意:上例程序中。宏定義表達(dá)式(y*y+3*y)兩邊的括號(hào)不能少,否則會(huì)發(fā)生錯(cuò)誤。當(dāng)做以下定義后:# define M y*y+3*y在宏展開(kāi)時(shí)將得到下述語(yǔ)句:

s=3*y*y+3*y+4*y*y+3*y+5*y*y+3*y,顯然與題意不符。因此,在作宏定義時(shí)必須十分注意,應(yīng)保證在宏代換之后不發(fā)生錯(cuò)誤。

(5)帶參數(shù)宏定義

        C語(yǔ)言允許宏帶有參數(shù)。在宏定義中的參數(shù)稱(chēng)為形式參數(shù),在宏調(diào)用中的參數(shù)稱(chēng)為實(shí)際參數(shù)。對(duì)帶參數(shù)的宏,在調(diào)用中,不僅要宏展開(kāi),而且要用實(shí)參去代換形參。

        一般定義形式:    # define  宏名 (形參表) 字符串 

        在字符串中含有各個(gè)形參。

        一般調(diào)用形式:     宏名(實(shí)參表)

        例如:  

                          #   define  MAX(a,b)      (a>b)?a:b

                          main () {

                                int x,y,max;

                                printf("input two numbers:");

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

                                max=MAX(x,y);

                                printf("max=%d\n",max);

                          }

(6) 對(duì)于宏定義語(yǔ)句,預(yù)處理程序?qū)λ蛔魅魏螜z查,如果有錯(cuò)誤,只能在編譯已被宏展開(kāi)后的源程序時(shí)發(fā)現(xiàn)。

(7)宏定義在行末不必加分號(hào),如加上分號(hào)則連分號(hào)也一起置換。

(8)宏定義必須寫(xiě)在函數(shù)之外,其作用域?yàn)楹甓x命令起到源程序結(jié)束。如要終止其作用域可使用#underf命令。

                        例如:

                                  #  define  PI 3.14159

                                  main()

                                  {

                                  ......

                                  }

                                  # underf  PI

                                  f1()    

             在這段程序中,PI只在main函數(shù)中有效,在f1()中無(wú)效。

(9)宏名在源程序中若用引號(hào)括起來(lái),則預(yù)處理程序不對(duì)其做宏代換。

                          例如:

                                #   define   Ok  100

                                main()

                                {

                                      printf("OK");

                                      printf("\n");

                                 }

               在這段程序中,宏名OK表示100,但在printf語(yǔ)句中OK被引號(hào)括起來(lái),因此不做宏代換,把“OK”當(dāng)字符串處理。程序的運(yùn)行結(jié)果為:OK

 (10)宏定義允許嵌套,在宏定義的字符串中可以使用已經(jīng)定義的宏名。在宏展開(kāi)時(shí)由預(yù)處理程序?qū)訉哟鷵Q。

                           例如:

                                 #define   PI   3.14159

                                 #define   S     PI*y*y

(11)習(xí)慣上宏名用大寫(xiě)字母表示,以便與變量區(qū)別。但也允許用小寫(xiě)字母。

(12)可用宏定義表示數(shù)據(jù)類(lèi)型,使書(shū)寫(xiě)方便。

                           例如:

                                 # define  STU  struct stu

                       這樣一來(lái),可以在程序中使用STU做變量說(shuō)明,例如:

                                 STU  body[5],*p;

(14)對(duì)“輸出格式”做宏定義,可以減少書(shū)寫(xiě)麻煩。

                            例如:

                                  # define  P printf

                                  #define   D "%d\n"

                                  #define  F "%f\n"

                                  main(){

                                  int a=5, c=8, e=11;

                                  float b=3.8,  d=9.7,   f=21.08;

                                  P(D F,a,b);

                                  P(D F,c,d);

                                  P(D F,e,f);

                                  }

(15)帶參宏定義中,宏名和形參表之間不能有空格出現(xiàn)。

                         例如:  #define  MAX(a,b)  (a>b)?a:b

                  不能寫(xiě)成     #define  MAX  (a,b)  (a>b)?a:b  這樣一來(lái),宏調(diào)用語(yǔ)句:

max=MAX(x,y)  將變?yōu)椋?nbsp; max=MAX(a,b)(a>b)?a:b(x,y)   ,這顯然是錯(cuò)誤的。

(16)再帶參宏定義中,形式參數(shù)不分配內(nèi)存單元,因此不必做類(lèi)型定義。而宏調(diào)用中的實(shí)參有具體值。要用他們?nèi)ゴ鷵Q形參,因此必須做類(lèi)型說(shuō)明。這是與函數(shù)中的情況不同的。在函數(shù)中,形參和實(shí)參是兩個(gè)不同的量,各有自己的作用域,調(diào)用時(shí)要把實(shí)參值賦予形參,進(jìn)行“值傳遞”。而在帶參宏中,只是符號(hào)代換,不存在值傳遞的問(wèn)題。

(17)在宏定義中的形參是標(biāo)識(shí)符,而宏調(diào)用中的實(shí)參可以是表達(dá)式。

                        例如:

                                #define SQ(y)  (y)*(y)

                                main(){

                                int a,sq;

                                printf("input a number:");

                                scanf("%d",&a);

                                sq=SQ(a+1);

                                printf("sq=%d\n",sq);

                                } 

                                

(18)在宏定義中,字符串內(nèi)的形參通常要用括號(hào)括起來(lái)以避免出錯(cuò),例如把上面的例子改成:

                                #define SQ(y)  y*y

                                main(){

                                int a,sq;

                                printf("input a number:")

                                scanf("%d",&a);

                                sq=SQ(a+1)

                                }

              當(dāng)給a賦值為3時(shí)運(yùn)行的結(jié)果是sq=7。

(19)為避免錯(cuò)誤,對(duì)于宏定義不僅應(yīng)在參數(shù)兩側(cè)加括號(hào),也應(yīng)在整個(gè)字符串外加括號(hào)。

(20)宏定義也可以用來(lái)定義多個(gè)語(yǔ)句,在宏調(diào)用時(shí),把這些語(yǔ)句又代換到源程序內(nèi)。

                      例如:

                                  #define SSSV(s1,s2,s3,v)    s1=l*w;s2=l*h,s3=w*h,v=w*l*h;

                                  main(){

                                         int l=3,w=4,h=5,sa,sb,sc,vv;

                                         SSSV(sa,sb,sc,vv);

                                         printf("sa=%d\nsb=%d\nsc=%d\nvv=%d\n",sa,sb,sc,vv);

                                  }

                 上述程序第一行為宏定義,用宏名SSSV表示4個(gè)賦值語(yǔ)句,4個(gè)形參分別為4個(gè)賦值符左邊的變量。在宏調(diào)用時(shí),把4個(gè)語(yǔ)句展開(kāi)并用實(shí)參代替形參。使計(jì)算結(jié)果送入實(shí)參中。

 

本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/omaigaode/archive/2008/12/04/3441834.aspx

posted on 2009-10-23 15:00 life02 閱讀(966) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): 筆試

評(píng)論

# re: 09騰訊筆試題(轉(zhuǎn)) 2009-10-24 09:17 tiny
第一題答案對(duì)嗎?#define Max(a,b) (a/b)?a:b
a = -2, b = -1
這個(gè)問(wèn)題不是這么簡(jiǎn)單的吧。
考慮到正負(fù)數(shù),考慮到無(wú)符號(hào)情況  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线国产精品| 欧美精品粉嫩高潮一区二区 | 亚洲高清色综合| 亚洲国产欧美不卡在线观看| 久久精品视频网| 欧美黑人国产人伦爽爽爽| 亚洲精品国产精品国自产观看浪潮| 欧美大片在线观看一区二区| 日韩一级二级三级| 欧美亚洲视频在线看网址| 韩国福利一区| 欧美大胆a视频| 亚洲无线视频| 你懂的成人av| 亚洲视频在线观看三级| 国产欧美成人| 你懂的国产精品永久在线| 99国产精品久久久| 久久久在线视频| 亚洲免费电影在线观看| 国产精品自在线| 蜜月aⅴ免费一区二区三区| 亚洲最新色图| 免费观看国产成人| 亚洲香蕉网站| 精品动漫3d一区二区三区免费| 欧美国产一区二区在线观看| 亚洲一区在线播放| 欧美激情亚洲视频| 欧美一区二区三区免费视| 亚洲国内精品| 国产精品视频久久久| 美女脱光内衣内裤视频久久网站| 亚洲精品一区中文| 另类酷文…触手系列精品集v1小说| 这里是久久伊人| 亚洲第一网站免费视频| 国产精品美女主播在线观看纯欲| 免费欧美日韩国产三级电影| 性色av一区二区三区在线观看| 亚洲欧洲一二三| 老色鬼久久亚洲一区二区| 亚洲一本大道在线| 亚洲人成高清| 在线观看91久久久久久| 国产精品影片在线观看| 欧美麻豆久久久久久中文| 久久久久久久97| 性做久久久久久久久| 一区二区欧美在线观看| 亚洲电影天堂av| 麻豆成人av| 久久久久久亚洲精品中文字幕| 亚洲一区二区动漫| 日韩视频免费看| 亚洲日本无吗高清不卡| 在线精品视频免费观看| 国产婷婷色一区二区三区在线 | 亚洲一区二区免费| 亚洲国产欧美久久| 亚洲高清免费视频| 在线精品一区二区| 黑人巨大精品欧美黑白配亚洲| 国产精品免费一区二区三区观看| 欧美日韩国产不卡在线看| 欧美国产综合| 欧美aⅴ99久久黑人专区| 久久裸体艺术| 久久久亚洲影院你懂的| 久久精品视频导航| 久久精品1区| 久久精品一本| 久久久亚洲精品一区二区三区| 久久国产天堂福利天堂| 久久超碰97人人做人人爱| 欧美亚洲视频一区二区| 欧美一二三区精品| 久久精品网址| 麻豆精品传媒视频| 欧美国产精品一区| 欧美日韩国产综合在线| 欧美午夜精彩| 国产精品影院在线观看| 国产人成精品一区二区三| 国产亚洲成av人在线观看导航| 国产美女一区二区| 韩国精品久久久999| 精品二区视频| 亚洲精选久久| 亚洲视频在线播放| 午夜视频精品| 猛男gaygay欧美视频| 欧美大片在线看免费观看| 亚洲国产欧美一区| 99re66热这里只有精品4| 亚洲一区三区视频在线观看| 欧美在线观看视频在线| 老色鬼久久亚洲一区二区| 欧美乱妇高清无乱码| 国产精品区一区二区三区| 国产一区二区在线观看免费播放 | 欧美激情一区二区三区高清视频| 欧美片在线播放| 国产精品久久久久9999高清| 国产日韩欧美另类| 最新亚洲一区| 午夜伦欧美伦电影理论片| 老巨人导航500精品| 亚洲精品午夜精品| 亚洲欧美日韩国产综合在线| 久久视频在线免费观看| 欧美日韩精品一区二区天天拍小说 | 亚洲美女毛片| 性做久久久久久久久| 欧美二区在线| 国产欧美日韩麻豆91| 亚洲精品男同| 久久精品官网| 最新日韩精品| 久久成人精品一区二区三区| 欧美另类亚洲| 在线观看成人av电影| 亚洲欧美日韩国产一区二区三区| 猛男gaygay欧美视频| 亚洲男人天堂2024| 欧美久久久久免费| 狠狠入ady亚洲精品经典电影| 一本一本久久| 欧美成人免费大片| 欧美亚洲尤物久久| 欧美日韩精品二区| 亚洲经典三级| 久久人体大胆视频| 亚洲主播在线观看| 欧美日韩国产一中文字不卡| 亚洲大片在线| 久久精品国产视频| 一区二区三区欧美在线观看| 欧美国产激情二区三区| 韩国福利一区| 久久精品一区二区三区不卡| 中日韩视频在线观看| 欧美精品一区二区在线观看| 在线观看日韩www视频免费| 久久精品一本| 亚洲欧美成aⅴ人在线观看| 欧美日韩一区二区三区在线观看免 | av成人福利| 欧美激情视频在线播放| 亚洲黑丝在线| 免费视频一区| 久久亚洲二区| 在线成人中文字幕| 麻豆国产va免费精品高清在线| 亚洲欧美一区二区视频| 国产精品女主播一区二区三区| 在线性视频日韩欧美| 亚洲区一区二| 欧美黑人多人双交| 亚洲日本在线观看| 亚洲精华国产欧美| 欧美激情1区2区3区| 亚洲精品一区二区在线观看| 欧美风情在线| 欧美va天堂va视频va在线| 亚洲激情自拍| 亚洲精品日韩在线观看| 欧美乱妇高清无乱码| 亚洲午夜激情| 亚洲小说欧美另类婷婷| 国产精品手机视频| 欧美自拍偷拍| 久久精品视频在线播放| 在线观看免费视频综合| 欧美激情四色| 欧美日韩一区二区国产| 午夜久久99| 久久精品一本| 亚洲精品在线视频| 在线综合+亚洲+欧美中文字幕| 国产精品成人观看视频免费| 欧美亚洲视频| 久久婷婷av| 宅男噜噜噜66国产日韩在线观看| 亚洲视频综合在线| 国产一区欧美日韩| 欧美国产免费| 欧美午夜大胆人体| 欧美主播一区二区三区美女 久久精品人| 香港久久久电影| 91久久国产综合久久蜜月精品 | 国产精品欧美久久| 久久久久.com| 欧美电影免费观看网站| 亚洲男人第一av网站| 欧美在线视频免费播放| 亚洲精品久久久久久久久久久久| 一区二区三区国产盗摄| 狠狠爱成人网| 99精品黄色片免费大全|