1樓:
正確的完整輸出 3 個整數的程式結構應該按照如下寫法:
#define n 3
#include
int main( )
;for(i = 0 ; i < n ; i ++ ) /* 迴圈輸出整數陣列 a 中的 3 個數字,特別要注意:i 必須要寫成:i < n,而不能夠寫成:
i <= n,否則的話,就會產生越界錯誤。 */
printf("%d\t", a[i] ) ;
printf("\n" );
return 0 ;
}由於 c 語言的陣列下標是從 0 開始的,而不是像 pascal 語言那樣是從 1 開始的。故
你原來的程式語句中:
#define n 3
printf("%d", a[n]) ; 用 n = 3 替換 a[n],就變成了:printf("%d", a[3]) ; 那就肯定越界了。
2樓:
陣列下標從0開始,a[n]要改成a[n-1],否則下標越界了。
3樓:鎝籌紬錛
printf這一行末尾的;改一下, 不要使用中文輸入法.
4樓:風林火陰山雷
您好!很高興為您解答。
巨集定義的用處主要體現在便於程式的除錯上。
比如我要寫一個計算圓相關資訊(周長、面積等等)的程式,需要定義π(3.14):
#define pi 3.14
那麼勢必pi這個標識可以在程式中代替所有的3.14,如果我發現計算的精度不夠,需要π的更多有效位時,則只需將巨集定義修改為:
#define pi 3.1415926
那麼程式中的所有pi都會變成3.1415926
可想而知,沒有巨集定義,我需要將**中全部的3.14都手動改為3.1415926
即使是定義double pi=3.14;,你會發現當**很長時,在亂軍叢中找到一行「double pi=3.14;」是多麼困難的事。
又比如陣列,定義時是不能出現「int a[n];」這樣的定義的,編譯通不過,因為必須規定陣列長度。
但如果是:
#define n 10
int a[n];
就可以,對巨集定義編譯器是不作檢查的,應為巨集定義只是簡單的符號替換。所以一旦我還沒有確定要定義多長的陣列,但又想通過編譯時,就可以提現巨集定義的用處了。
如此看來,巨集定義提升了程式編寫的靈活性。
望採納~如您還有不解,歡迎追問~
c語言巨集定義如何用?用巨集定義有什麼優點?
5樓:匿名使用者
主要用於函式重定義,通用性,可以用一個變數符號替代另一個變數符號格式:#define m(x,y) x+y在主程式裡寫入z=m(6,9);等價於z=6+9;而寫成z=(6-8,9);等價於z=6-8+9 ;直接代入
還有就是 :#define uint unsigned int 即用 uint 代替unsigned int 便於書寫,還有就是不同作業系統的通用變數識別
6樓:匿名使用者
用#define 來定義,如#define max 100
優點:在以後的程式中 要修改max的大小 不用跑到程式中找 直接修改
#define max 的大小即可。很方便。
7樓:匿名使用者
自己去**找呀!!!!
c語言中的巨集定義怎麼用?
8樓:仁昌居士
c語言bai中的巨集
定義用du法分為兩種。
1、不帶引數zhi的巨集定義比較dao簡單,就是用一個指定回的答識別符號來代表一個字串。它的一般形式為「#define 識別符號 字串」,例如#define e 2.718281828459。
這種方法使使用者能以一個簡單的名字代替一個長的字串。
2、帶引數的巨集定義不是僅僅進行簡單的字串替換,還要進行引數替換。其定義的一般形式為;「#define 識別符號(巨集名)(參數列) 字串」,字串中包含在括號中所指定的引數。例如#define s(a,b) a*b area=s(3.
2)。
9樓:天雲一號
巨集定義的格式如下:
#define 識別符號 字串
其中,#表示這是一條預處理命令;內#define為巨集容定義命令;「識別符號」為巨集定義的巨集名;「字串」可以上常數、表示式、格式串等。
舉例如下:
#define pi 3.14 // 對3.14進行巨集定義,巨集名為pi
void main()
10樓:匿名使用者
在想對特定的內容定義的時候用
參考**
有問版題請追問 滿意記得權採納
11樓:匿名使用者
#define 巨集名稱 定值
c語言中的巨集定義有什麼用?
12樓:風林火陰山雷
您好!很高興為您解答。
巨集定義的用處主要體現在便於程式的除錯上。
比如我要寫一個計算圓相關資訊(周長、面積等等)的程式,需要定義π(3.14):
#define pi 3.14
那麼勢必pi這個標識可以在程式中代替所有的3.14,如果我發現計算的精度不夠,需要π的更多有效位時,則只需將巨集定義修改為:
#define pi 3.1415926
那麼程式中的所有pi都會變成3.1415926
可想而知,沒有巨集定義,我需要將**中全部的3.14都手動改為3.1415926
即使是定義double pi=3.14;,你會發現當**很長時,在亂軍叢中找到一行「double pi=3.14;」是多麼困難的事。
又比如陣列,定義時是不能出現「int a[n];」這樣的定義的,編譯通不過,因為必須規定陣列長度。
但如果是:
#define n 10
int a[n];
就可以,對巨集定義編譯器是不作檢查的,應為巨集定義只是簡單的符號替換。所以一旦我還沒有確定要定義多長的陣列,但又想通過編譯時,就可以提現巨集定義的用處了。
如此看來,巨集定義提升了程式編寫的靈活性。
望採納~如您還有不解,歡迎追問~
13樓:綠波菜
在這個題中是看不出什麼好處 for (int i=0; i以用 10 代替,因為題目簡單 但是如果比較複雜的 如二位陣列啊a[m][n] 中可能一個 for (int i=0; i m n 巨集定義,就不需再用具體數值代替 這樣 程式的可讀性就好很多,你要知道,程式設計師編好程式 也會有人幫他複查的,如果你都用數值代替 ,一旦**很複雜了你自己看的明白,別人就不知所云了,當然還有一些好處 如 當遇到較長數值時 用一個字母代替 有簡化作用等。 14樓:匿名使用者 ①重用性高:比如你定義一個函式a裡有個陣列a[10],其他地方用到了函式a但是陣列大小為100,若是用了巨集定義就不用一個個改了,直接把函式複製過去#define n 10改為#define n 100即可 ②不易出錯:用到很多的某一資料時很管用如#define π 3.1415916 15樓:匿名使用者 首先解釋一下巨集定義的作用,巨集定義是在編譯的時候替換掉。具體到這個程式中就是所有出現n的地方都用10來替換,lz會覺得為什麼不直接寫10呢?對吧,當時我也有這樣的疑問。 這個程式比較小,所以體現不出來,試想當程式**上萬行的時候,如果因為開發的需要這個10需要換成8,那麼只需要在巨集定義處的10改成8就行了,如果當時沒有巨集定義,那不知要一個一個的改到什麼時候,估計lz是新手,不懂可以追問 16樓:閒來無事 編譯的時候替換成10 在c語言中 巨集定義是什麼? 17樓:雪人晒太陽 在c語言源程式中,允許用一個識別符號來表示一個字串,稱為巨集,巨集定義是由源程式中的巨集定義命令完成的,巨集替換是由預處理程式自動完成的。巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括:巨集定義、檔案包含、條件編譯。 18樓:仁昌居士 c語言中的巨集定義用法分為兩種。 1、不帶引數的巨集定義比較簡單,就是用一個指定的識別符號來代表一個字串。它的一般形式為「#define 識別符號 字串」,例如#define e 2.718281828459。 這種方法使使用者能以一個簡單的名字代替一個長的字串。 2、帶引數的巨集定義不是僅僅進行簡單的字串替換,還要進行引數替換。其定義的一般形式為;「#define 識別符號(巨集名)(參數列) 字串」,字串中包含在括號中所指定的引數。例如#define s(a,b) a*b area=s(3. 2)。 c語言中什麼是巨集定義,它是幹什麼的? 19樓:蜻蜓點水 就是強制性的字元替換,比如說你要用a代表6,那麼後面所有是a的地方都是用字元6替換掉就可以了,這個是不進行運算只是替換 比如define a (a+b) 那麼後面所有a的地方都可以全部替換成(a+b)但是你不能用a+b的結果 20樓: 巨集定義又稱為預定義,它有很多功能,我也剛剛瞭解一點。首先他能定義常量,這樣我們可以集中統一修改。其次,它還能定義函式(預定義)。總之,熟悉它會很方便。 c語言中的巨集定義如何在組合語言中實現啊,請大俠賜教! 21樓:匿名使用者 想要理解巨集定義先理解巨集替換。巨集替換就是巨集名字在編譯的時候被定義的部分替換的過程。這樣你就可以在一個地方定義,多處都可以使用了,但是和變數不同,巨集只是被替換。 延遲函式 sleep(毫秒數) 需要包含 windows.h。 22樓: 巨集名 macro ……巨集體 ……endm 23樓: pi equ #3.1415926d c語言巨集定義函式如何呼叫(裡面含引數可以當函式用嗎) 24樓:魔方格的故事 使用巨集函式或者巨集函式時,注意如下幾點: 1.巨集函式的引數沒有型別,前處理器只負責做形式上的替換,而不做引數型別檢查,所以傳參時要格外小心。 2.巨集函式定義要注意格式,尤其是括號。 如果上面的巨集函式寫成 #define max(a, b) (a>b?a:b),省去內層括號,則巨集就成了k = (i&0x0f>j&0x0f? i&0x0f:j&0x0f),運算的優先順序就錯了。同樣道理,這個巨集定義的外層括號也是不能省的。 若函式中是巨集替換為 ++max(a,b),則巨集就成了 ++(a)>(b)?(a):(b),運算優先順序也是錯了。 3.巨集函式往往會導致較低的**執行效率。 若是普通函式,則通過遞迴,可取的最大值,時間複雜度為o(n)。但若是巨集函式,則巨集為( a[n]>max(n-1)?a[n]: max(n-1) ),其中max(n-1)被呼叫了兩遍,這樣依此遞迴下去,時間複雜度會很高。 25樓:匿名使用者 巨集定義,不能當函式使(函式中的return是返回到呼叫點,而巨集中的return卻是從呼叫點跑開了) 你的**,在編譯時會進行巨集替換,真正的**變成了如下: #include //#define a(b,c) int main() //本身這句也有問題,return後跟的printf()永遠不會執行! return 0;} 項成郟卯 a正確顯然,b正確n2 n3直接截斷小數部分返回一個整數,c正確,賦值語句是左優先順序的,這個語句先把j賦給i,再把i賦給k,d是不正確的,和c類似,不過第一次賦值,b c 1,賦值語句的左側是變數,不能是一個表示式, 鍾全婁卯 如果要達到原來的效果,就不可能寫成後面的形式。s a i a... 你定義了。在程式中是不能改變的。只能在定義的地方修改。程式在預處理期間進行值替換。 德眾 比如巨集定義在一開頭定義 define n 10,那麼接下來所有的n都是10,巨集定義一旦定下除非你修改 否則都無法修改巨集定義 成都中公優就業 巨集定義在程式內是不可改變的,只能在定義的地方只能在定義的地方修... 焉秋梵正 簡單來說 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 巨集替換是c c 的預處理中的一部分,在c 標準中有4條規則來定義替換。規則1 實參替換。本條規則描述帶引數的巨集的替換過程。對於巨集定義中的形參,在替換列表中,如果不是作為 或 的運算元,那麼將對應實參完全 相當於對實參進行求值 然...C語言多次賦值問題,C語言中使用巨集定義多次賦值的問題
c語言的巨集定義能不能修改,C語言中怎樣修改巨集定義呢
c語言中巨集替換的替換規則,C語言中,巨集替換的替換規則