c語(yǔ)言宏函數(shù)立方 c語(yǔ)言求立方的函數(shù)

C語(yǔ)言:編寫帶參數(shù)的宏,分別計(jì)算x的平方和立方

#include?stdio.h

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、成都做網(wǎng)站與策劃設(shè)計(jì),東營(yíng)網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:東營(yíng)等地區(qū)。東營(yíng)做網(wǎng)站價(jià)格咨詢:18982081108

#define?Pow2(x)?((x)*(x))

#define?Pow3(x)?((x)*(x)*(x))

int?main(void)

{

int?a?=?10;

printf("%d^2=%d\n",a,Pow2(a));

printf("%d^3=%d\n",a,Pow3(a));

return?0;

}

C語(yǔ)言程序解釋

#include #include是固定格式,意思是”包含“,中的stdio.h,這是一個(gè)庫(kù)函數(shù)頭,用括起來(lái),這句意思是把名為stdio.h的頭(其實(shí)是一個(gè)文件)包含到當(dāng)前的程序中。在C語(yǔ)言中,有許多函數(shù)可以直接拿來(lái)用,比如printf函數(shù)(輸出函數(shù)),這些函數(shù)被稱為庫(kù)函數(shù),要想調(diào)用這些函數(shù),就要給出相應(yīng)的庫(kù)函數(shù)頭,不同的庫(kù)函數(shù)需要給出不同的頭,庫(kù)函數(shù)頭的含義是”將這些函數(shù)的定義包含到程序中去“,因?yàn)槟愕某绦蛑袥](méi)有這些庫(kù)函數(shù)的定義,所以你想要調(diào)用某些庫(kù)函數(shù),就要給出相應(yīng)的頭,將函數(shù)的定義包含到程序中是有編譯器完成的

#define CUBE(x) (x*x*x) 這是C語(yǔ)言中的宏定義,宏分為簡(jiǎn)單的宏和帶參數(shù)的宏,宏有什么作用?宏的一般格式是”#define 記號(hào) 替換列表“其中# define是“定義”的意思,也算是固定格式吧,記號(hào)可以是字母,符號(hào)等一切可能出現(xiàn)的東西,比如說(shuō)#define CUBE(x) (x*x*x) 中的CUBE,一般用大寫字母(C語(yǔ)言程序員數(shù)十年遵循的規(guī)范,希望你不要打破哦);"替換列表“可以是表達(dá)式,語(yǔ)句等等(比如#define CUBE(x) (x*x*x) 中的(x*x*x),表示計(jì)算X的立方)。宏的作用是將程序中出現(xiàn)的所有記號(hào)用替換列表代替。比如說(shuō)#define CUBE(x) (x*x*x)中,只要程序中出現(xiàn)CUBE(x) ,編譯器(這個(gè)工作是有編譯器完成的)就把CUBE(x) 替換為(x*x*x)。簡(jiǎn)單的宏比如#define N 10,在程序中凡是有N的地方都將被替換為10.帶參數(shù)的宏比如說(shuō)你的程序中的宏#define CUBE(x) (x*x*x),CUBE是記號(hào),括號(hào)中的x是參數(shù),就像一個(gè)函數(shù),在程序中用的時(shí)候,比如出現(xiàn)i=CUBE(10);那么就將被替換為i=(10*10*10); i的值將被賦予10的立方。

main() 是C語(yǔ)言中的主函數(shù),C語(yǔ)言是由函數(shù)組成的,其中主函數(shù)(或稱main函數(shù))是必須有的,程序執(zhí)行的時(shí)候是由主函數(shù)開(kāi)始執(zhí)行的,主函數(shù)內(nèi)容要用{}括起來(lái)

int n=5; 定義變量n并賦與n值為5. int表示變量n的類型是整型,n=5是將n的值初始化為5(以后換可以改變),后面的分號(hào)是必須有的,C語(yǔ)言規(guī)定每條語(yǔ)句后都應(yīng)該以分號(hào)結(jié)尾。

int s=CUBE(++n); 定義s為整型并賦予s的值為CUBE(++n),CUBE(++n)前面已經(jīng)說(shuō)過(guò)了,它將被替換為(++n*++n*++n),其中++n是一種算數(shù)運(yùn)算符,就像乘除加減法一樣,++n的意義是將n自增1,整個(gè)表達(dá)式(即++n)不變,這里要分清變量和表達(dá)式,比如a+b,變量是a和b,表達(dá)式是a+b,。所以這里s就等于125.

printf(“%d”,s); 這是一個(gè)輸出函數(shù),%d表示S的類型為整形,輸出s的值。

C語(yǔ)言-函數(shù)式宏

函數(shù)式宏(function-like macro)較之對(duì)象式宏可以進(jìn)行更復(fù)雜的代換。

函數(shù)式宏 sqr 是在編譯時(shí)展開(kāi)并填入程序的,因此 只要是能用雙目運(yùn)算符 * 進(jìn)行乘法計(jì)算的數(shù)據(jù)類型,都能使用函數(shù)式宏 。

函數(shù)定義則需為每個(gè)形參都定義各自的數(shù)據(jù)類型,返回值的類型也只能為一種。就這點(diǎn)而言,函數(shù)較為嚴(yán)格。

函數(shù)為我們默默無(wú)聞地進(jìn)行了一些復(fù)雜處理,如:

而函數(shù)式宏所做的工作只是宏展開(kāi)和填入程序,并不進(jìn)行上述處理。

根據(jù)以上特征, 函數(shù)式宏或許能使程序的運(yùn)行速度稍微提高一點(diǎn),但是程序自身卻有可能變得臃腫 。

函數(shù)式宏在使用上必須小心謹(jǐn)慎。例如, sqr(a++) 展開(kāi)后 ((a++) * (a++)) 。每次展開(kāi), a 的值都會(huì)自增兩次。在不經(jīng)意間表達(dá)式被執(zhí)行了兩次,導(dǎo)致程序出現(xiàn)預(yù)料之外的結(jié)果,我們稱這種情況為宏的 副作用(side effect) 。

怎么用C語(yǔ)言編寫一個(gè)計(jì)算立方的函數(shù)?

這樣寫就可以了:

double fun_x3 (double x) { return x*x*x; }

程序例子,計(jì)算2的3次方。

#include stdio.h

double fun_x3 (double x) { return x*x*x;}

int main(){

double y;

int x=2;

y = fun_x3(x); //用 fun_x3(x) 或 fun_x3(2) 調(diào)用即可

printf("%g ", y ); // %g 是自動(dòng)優(yōu)化格式

return 0;

}

網(wǎng)站名稱:c語(yǔ)言宏函數(shù)立方 c語(yǔ)言求立方的函數(shù)
網(wǎng)頁(yè)網(wǎng)址:http://muchs.cn/article34/doocose.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、用戶體驗(yàn)、靜態(tài)網(wǎng)站、網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)