C語言關於巨集定義的習題,C語言中關於巨集定義的一道計算題

2022-09-10 08:05:27 字數 3123 閱讀 4184

1樓:

fudgf(5)*x 等價於 2.84+y*x, 此時y = 5, x = 2; 故結果為 2.84 + 5*2 = 12.

84 轉為整型即為12,你理解錯了,如果將#define fudgf(y) 2.84+y 定義成#define fudgf(y) (2.84+y) 這樣算出來的結果即為15

2樓:戶令霜

#define fudgf(y) 2.84+y這裡改成 #define fudgf(y) (2.84+y)就行了

因為巨集定義只是字元之間的轉換,所以按照你的寫法就變成了 2.84+y*x

我的教程重點強調了這方面的內容

3樓:匿名使用者

注意fudgf(5)*x在執行的時候是2.84+5*x=2.84+5*2=12.84;

所以最後結果為12

注意巨集的時候只是講語句中的巨集名後面的括號內的實參字串代替#define命令列中的形參 ,不要自己亂加括號

4樓:草柏渡

巨集定義就是純粹的替換。所以直接帶就可以了,有括號的加括號,沒括號的就不加,最後再做計算。

首先從main函式入手

printi(fudgf(5)*x)替換

printi(2.84+5*2)

printi(12.84)

再繼續換等等

5樓:商靜雲敬煦

巨集定義又稱為巨集替換,c語言中的巨集定義只是簡單的字串替換而已。

比如define

n1000

在程式中遇到n就自動把n替換成1000,n不是一個變數,不能賦值。

如果你寫n=1;

相當於寫1000=1;

這編譯是通不過的,所以你使n的值改變是做不到的。

n只是一個要被替換的記號而已,連變數也不是。

c語言中關於巨集定義的一道計算題

6樓:匿名使用者

首先巨集只負責替換,不負責計算。題目中替換後就是2*2+3 =7,他不會幫你計算2+3=5,而只是把2+3放到應該替換的地方

7樓:閉秀梅金女

從右往左邊算

j開始是2

j++就是2但是

j變成3了

++j的

值是4j變成4了

j++就是4所以

等號右邊一共是

2+3+4=9

m+=9

所以m是11了

8樓:匿名使用者

按巨集定義後,f(2+3)成為這樣:2*2+3=7。這個巨集定義的錯誤是沒有在2*n上加括號,這樣造成的2義性在程式當中是很難發現的。

在c語言中什麼叫巨集定義的常量

9樓:天雲一號

在c語言中,巨集定義的常量就是通過如下格式來定義的一個不帶引數的常量:

#define 識別符號 字串

舉例說明如下:

#include

#define pi 3.14   // 巨集定義常量,即pi=3.14

void main()

10樓:匿名使用者

形如:#define pi 3.14159

pi就是一個巨集定義的常量 等於3.14159

11樓:藍白的生活

常量只是巨集定義的一種,巨集定義還可以定義其他東西。

c語言 第十題 關於巨集定義的那個為什麼錯誤啊? 10

12樓:漢騎都尉中郎將

巨集定義只能取整體代換,代換後為printf("%s","yes!"),而"yes!"也是沒有內容的。

c語言巨集定義

13樓:易溶昌嘉美

巨集定義又稱為巨集替換,c語言中的巨集定義只是簡單的字串替換而已。

比如define

n1000

在程式中遇到n就自動把n替換成1000,n不是一個變數,不能賦值。

如果你寫n=1;

相當於寫1000=1;

這編譯是通不過的,所以你使n的值改變是做不到的。

n只是一個要被替換的記號而已,連變數也不是。

14樓:李磊符夏容

1.不需要加分號。

2.它和標頭檔案是同一個意思,在程式預處理時處理。巨集的作用就是防止出錯,一改全改。不用在程式中逐一修改,降低錯誤。

15樓:佔乃顧高爽

你指的?:是三目運算子。那個就是比較大小,舉個例子a>b?

a:b,a>b成立整個式子的值就是a反之為b,這個你應該懂吧!若真是那些雙目運算子你不懂,那就去好好重新在看遍書啊,那是基礎中的基礎

pr(x

pr(y

);這行y不是等於2嗎?

輸出怎麼是3

最後一行

pr(y

);又得4。這是因為y有進行++計算

16樓:風雷九州

樓主看看書,仔細看看編譯預處理都做了哪些事情。

程式設計語言的預處理的概念:在編譯之前進行的處理。 c語言的預處理主要有三個方面的內容:

1.巨集定義; 2.檔案包含; 3.

條件編譯。 預處理命令以符號「#」開頭。

巨集定義又稱為巨集代換、巨集替換,簡稱「巨集」。預處理製作單純的巨集,並不是檢查語法錯誤,所說義是錯誤的。

語法錯誤都是編譯階段才檢查的。預處理是不檢查的。

17樓:扯淡書生

貼圖,不然誰知道為什麼錯的

c語言關於巨集定義的問題

18樓:

把char s[4];改成char s[5];。

用字串替換就清楚了:'a'<=(s[++i]) && (s[++i])<='z' ? (s[++i])-'a'+'a' :

 (s[++i])——執行時執行了'a'<=(s[++i])使i增為1,再執行(s[++i])<='z'使i增為2,最後執行(s[++i])-'a'+'a'使i增為3……

c語言怎麼巨集定義2維陣列C語言怎麼巨集定義一個2維陣列

如果要強調是二維陣列,這樣也許更合適些 c c code?define m 80 define n 100 define array a,m,n a m n char array 1 例如 define m 80 define n 100 define array a,m,n a m n char ...

巨集定義與直接賦值有什麼區別,C語言中巨集定義的10和直接定義1有什麼區別

巨集定義 定義的是常量符號。直接賦值,賦給的是變數符號。巨集定義是預處理是完成的,本質是字元替換 直接賦值是記憶體上的操作版,與執行時有關 權 include define iii int int main void 想這個c語言 中,巨集定義iii,那麼它的下面就可以用iii來代表int,在編譯處...

C語言中怎麼定義動態的陣列長度,c語言中如何自定義陣列長度

include using namespace std int main int p,n,i cin n p new int n for i 0 i p i for i 0 i 什麼叫動態的陣列長度?c語言中怎麼定義動態的陣列長度 動態陣列長bai度,對於部du分新的編譯器,支zhi持c99的,可以...