當前位置:首頁 » 編程語言 » c語言學習宏
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言學習宏

發布時間: 2022-03-02 06:49:31

1. 大學c語言

  1. F(3+5) 相當於 F(8);

  2. 函數F返回P*x*x, P=3,x=8, 所以返回3*8*8 = 192

2. c語言的宏

肯定是7了
MAX( a + b, c + d ) * 100 替換後得
(5+2) > (3+3) ? (5+2) : (3+3) * 100 // 注意前面沒括弧,因此是:
7 > 6 ? 7 : 600,因此返回的就是7,如果要返回700必須這樣寫
#define MAX( x, y ) ((x) > (y) ? (x) : (y))

3. C語言 宏

難道3不能是字元串嗎?

"3*pi"是字元串,"3"是它的子串。
"3*pi"宏展開後為"3*3.1415926"也是字元串,整個源程序都被認為字元串!

現在,還有有編譯,編譯時,編譯器會把3*3.1415926當表達式計算,用結果再替換一次!

4. C語言的宏(macro)是什麼怎樣使用宏

#define VERSION—STAMP "1.02" 上例中所定義的這種形式的宏通常被稱為標識符。在上例中,標識符VERSION_STAMP即代表字元串"1.02"——在編譯預處理時,源代碼中的每個VERSION_STAMP標識符都將被字元串「1.02」替換掉。 以下是另一個宏定義的例子: #define CUBE(x)((x),(x)*(x)) 上例中定義了一個名為CUBE的宏,它有一個參數x。CUBE宏有自己的宏體,即((x)*(x)*(x))——在編譯預處理時,源代碼中的每個CUBE(x)宏都將被((x)*(x)*(x))替換掉。 使用宏有以下幾點好處: (1)在輸入源代碼時,可省去許多鍵入操作。 (2)因為宏只需定義一次,但可以多次使用,所以使用宏能增強程序的易讀性和可靠性。 (3)使用宏不需要額外的開銷,因為宏所代表的代碼只在宏出現的地方展開,因此不會引起程序中的跳轉。 (4)宏的參數對類型不敏感,因此你不必考慮將何種數據類型傳遞給宏。 需要注意的是,在宏名和括起參數的括弧之間絕對不能有空格。此外,為了避免在翻譯宏時產生歧義,宏體也應該用括弧括起來。例如,象下例中這樣定義CUBE宏是不正確的: denne CUBE(x) x * x * x 對傳遞給宏的參數也要小心,例如,一種常見的錯誤就是將自增變數傳遞給宏,請看下例: #include <stdio. h> #include CUBE(x) (x * x * x) void main (void); void main (void){int x, y;x = 5;y = CUBE( + +x); printfC'y is %d\n" . y);}在上例中,y究竟等於多少呢?實際上,y既不等於125(5的立方),也不等於336(6* 7*8),而是等於512。因為變數x被作為參數傳遞給宏時進行了自增運算,所以上例中的CUBE宏實際上是按以下形式展開的: y = ((++x) * (++x) * (++x)); 這樣,每次引用x時,x都要自增,所以你得到的結果與你預期的結果相差很遠,在上例中,由於x被引用了3次,而且又使用了自增運算符,因此,在展開宏的代碼時,x實際上為8,你將得到8的立方,而不5的立方。 上述錯誤是比較常見的,作者曾親眼見過有多年C語言編程經驗的人犯這種錯誤。因為在程序中檢查這種錯誤是非常費勁的,所以你要給予充分的注意。你最好試一下上面的例子,親眼看一下那個令人驚訝的結果值(512)。 宏也可使用一些特殊的運算符,例如字元串化運算符「#」和。連接運算符「##」。「#」運算符能將宏的參數轉換為帶雙引號的字元串,請看下例: define DEBUG_VALUE(v) printf(#v"is equal to %d.\n",v) 你可以在程序中用DEBUG_VALUE宏檢查變數的值,請看下例: int x=20; DEBUG_VALUE(x); 上述語句將在屏幕上列印"x is equal to 20"。這個例子說明,宏所使用的「#」運算符是一種非常方便的調試工具。 「##」運算符的作用是將兩個獨立的字元串連接成一個字元串。

5. 在C語言學習中什麼叫宏定義

宏定義是高級語言編譯器提供的常用語法,其目的是利用某一標識符標識某個文本字元串。在編寫程序時,如果程序中反復地使用某個數據或某段程序片段,就可以考慮將這個數據或程序片段定義為宏,然後每個出現該數據或程序片段的地方用宏名替代,這樣做的好處是程序簡潔,可讀性好,而且當需要修改這些相同的程序片段時,只要修改宏定義中的字元串即可,不需要修改多處。

6. c語言基礎宏要詳解(加分)

MN(x,y) (x)<(y)?(x):(y)

i=10; j=15

10*MN(10,15) = 10*10<15? 10:15

100<15不成立
所以
k = 15

解釋:MN(x,y)只是宏定義,不是函數,它是把後面的語句直接替換到實際的程序中,所以
c=10*abc(a,b) 等價於

k = 10 * i < j ? i:j;

* 的優先順序比<要大,所以先計算10*i; Ok?

7. c語言中的「宏」是指什麼

是一種批量處理的稱謂。計算機科學里的宏是一種抽象(Abstraction),它根據一系列預定義的規則替換一定的文本模式。

「宏」這個詞的使用暗示著將小命令或動作轉化為一系列指令。
計算機語言如C語言或 匯編語言有簡單的宏系統,由編譯器或匯編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。

在Objective-C語言源程序中,允許用一個標識符來表示一個字元串,稱為宏,被定義為宏的標識符稱為宏名。在編譯預處理時,對程序中所有出現的宏名,都用宏定義中的字元串去替換,這稱為宏替換或宏展開。

宏定義是由源程序中的宏定義命令完成的,宏替換是由預處理程序自動完成的。在Objective-C語言中,宏分為有參數和無參數兩種。

(7)c語言學習宏擴展閱讀

A類宏是用G65 Hxx P#xx Q#xx R#xx或G65
Hxx P#xx Qxx
Rxx格式輸入的,xx的意思就是數值,是以um級的量輸入的,比如你輸入100那就是0.1MM #xx就是變數號,變數號就是把數值代入到一個固定的地址中,固定的地址就是變數。

一般OTD系有#0~#100~#149~#500~#531.關閉電源時變數#100~#149被初始化成「空」,而變數#500~#531保持數據。我們如果說#100=30那麼現在#100地址內的數據就是30了。

B類宏能完成某一功能的一系列指令像子程序那樣存入存儲器,用戶可以設定M、S、T、G代碼調用它們,使用時只需給出這個指令代碼就能執行其功能,也可以像調用子程序一樣使用。

8. 在C語言中 宏定義是什麼

在C語言源程序中,允許用一個標識符來表示一個字元串,稱為宏,宏定義是由源程序中的宏定義命令完成的,宏替換是由預處理程序自動完成的。宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。

(8)c語言學習宏擴展閱讀:

宏(Macro),是一種批量處理的稱謂。計算機科學里的宏是一種抽象,它根據一系列預定義的規則替換一定的文本模式。

計算機語言如C語言或匯編語言有簡單的宏系統,由編譯器或匯編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。

9. C語言中的宏

C語言中的宏定義的字是:define
C語言中的define宏定義有帶參數的和不帶參數兩中形式
不帶參格式是:#define 宏名 字元串
帶參格式是:#define 宏名(參數1,參數2,...) 字元串
在C語言里宏定義只用來做的宏名替換,而不做語法檢查的,因而它不是C語句,所以在宏定義的時候不需要在後面加";"
宏也在C里也叫預處理命令,因為宏是在程序編譯前先進行字元替換的,所以叫預處理.在C里還有其它的預處理命令如:
#define
#undef
#ifdef
等等

10. c語言使用宏3個步驟是什麼

c語言使用宏3個步驟是:
1)寫出這個宏的定義,比如
#define ADD(a,b) ((a)+(b))
2)在代碼中應用這個宏,例如
xx=ADD(3+4,5)*ADD(0,7)
3)預編譯時系統自動展開宏,例如上述宏展開後的結果是
xx=((3+4)+(5))*((0)+(7))