C 中可以用define定義其它型別的值嗎

時間 2022-03-24 01:43:30

1樓:匿名使用者

define 本質上相當於 字串替換 ,也就是替換你**裡的文字因此它本身是沒有任何型別的,可以是數字 可以是單詞 等等比如#define aaa 5

那麼 當你這麼使用時

int a= aaa ;

就相當於定義了乙個數字.

而你要是

#define aaa tom

int tom,jerry;

jerry=aaa;

這又相當於 定義了乙個單詞(識別符號),等價於jerry=tom;

所以 ,define 和型別沒啥關係, 他就是相當於替換**

2樓:孟羽然

#define是巨集定義,而不是變數定義。

說白了,它只是起到乙個簡單的文字替換的作用,僅僅在編譯時進行文字替換。等編譯完成以後,巨集就不存在了。

所以,#define和變數型別沒有任何關係,你定義成什麼內容都可以。甚至可以定義一段**、乙個函式……

例如:#define a 1000

#define b "helloworld"

#define c 'c'

#define d 3.1415

#define max(x,y) ((x)>(y)?(x):(y))

#define log(msg) fprintf(stderr, "%s\n", msg);

#define list(folder) myfile *f = get_file_list(folder); \

while (f != null) \

3樓:匿名使用者

可以,#define只是在編譯時的替換,啥都可以定義,資料,字串,函式,識別符號

c++ 中define(巨集定義) 各種用法(含特殊),小舉個例子,謝謝!

4樓:會飛的小兔子

1、define是巨集定義,程式在預處理階段將用define定義的內容進行了替換。因此在程式執行時,常量表中並沒有用define定義的常量,系統不為它分配記憶體。而const定義的常量,在程式執行時,存在常量表中,且系統為它分配記憶體。

2、define定義的常量,預處理時只是直接進行了替換,因此在編譯時不能進行資料型別檢驗。而const定義的常量,在編譯時進行嚴格的型別檢驗,可以避免出錯。

3、define定義表示式時要注意「邊緣效應」。

例如:#definen1+2;

floata=n/2.0;

按照常規做法,可能會認為結果是3/2=1.5;

但是實際上,結果應該為1+2/2.0=2.0;

若想要實現3/2,則#definen(1+2);

即為避免邊緣效應,一定要加括號。

擴充套件資料c++巨集定義

#define命令是c++語言中的乙個巨集定義命令,它用來將乙個識別符號定義為乙個字串,該識別符號被稱為巨集名,被定義的字串稱為替換文字。

1、簡單的巨集定義:

#define 《巨集名》 《字串》

例: #define pi 3.14159262、帶引數的巨集定義

#define 《巨集名》 (《參數列》) 《巨集體》

例: #define a(x) x

5樓:湖人總冠軍

1、define是巨集定義,在預處理階段,程式將替換define定義的內容,因此,當程式執行時,常量表中沒有用define定義的常量,系統不會為它分配記憶體,當程式執行時,const定義的常量存在於常量表中,並且系統為它分配記憶體。

2、define定義的常量,只在預處理期間直接替換,因此在編譯期間無法執行資料型別驗證,對於const定義的常量,在編譯時進行嚴格的型別檢查可以避免錯誤。

3、define定義表示式時要注意「邊緣效應」。

例如:#definen1+2;

floata=n/2.0;

按慣例,可認為結果為3/2=1.5;

但實際上,結果應該是1+2/2.0=2.0;

如果你想達到3/2,定義(1+2);

為了避免邊緣效應,必須加括號。

c++中.const 與#define都是定義全域性變數的嗎?

6樓:匿名使用者

#define只是預編譯指令,也就是在編譯器編譯之前,會把**裡面除了""中的pi外的pi都變成內3.1415926,也就

是說,編譯容器是看不到pi這個符號的。

而const定義是帶有型別的,定義的是變數,它有實際記憶體,只是這個記憶體是不可以更改的。

所以從c++中提倡使用const變數,而不用#define

7樓:匿名使用者

const和#define是否定義全域性變數,要看他們所處的位置,如果位於main主函式外面,則為全域性變數,否則為區域性變數

8樓:

#define是巨集定義 一般時候最好不要用

c++中用#define遇到的問題

9樓:丶

一般在標頭檔案中寫#ifndef,防止重定義。

你可以在class.h中寫:

#ifndef _class_h_

#define _class_h_

//下面是類的定義

//····

#endif

然後在其他檔案中包含標頭檔案#include"class.h",這樣能保證class.h的內容只編譯一次

10樓:不見彩虹多年

首先,你的#endif在哪?應該在main函式後面。而#include"class.h"是在#ifndef _class_h_

...#endif中間、所以需要在#ifndef _class_h_前面增加#define _class_h_

c++ define時最大能定義多大的數字? 比如: #define n 65536 會溢位,有什麼辦法解決

11樓:匿名使用者

#define n 65536

只是將後面**出現n的地方替換成後面的數字,defind不存在資料型別的問題。

如果溢位,說明你後面的變數型別的取值範圍太小。如果原來用的是short,改成int或者long即可。

c語言中可不可以用變數定義陣列的個數

可以使用mallo函式 mallo函式返回的實際是乙個無型別指標,必須在其前面加上指標型別強制轉換才可以使用 指標自身 指標型別 malloc sizeof 指標型別 資料數量 int p null intn 10 p int malloc sizeof int n 擴充套件資料 mallo函式使用...

C 怎樣使用變數定義二維陣列,C 中怎麼用new函式定義乙個二維陣列?

1.定義m m的陣列。int m,p p new int m 2.定義n m的陣列 int n int p 2 new int n 2 此處的2不能是變數 3.定義n m的二維陣列 float tt new float n for int i 0 i float m float tt new flo...

c程式中2的20次方可以用220表示嗎

不可以用 表示乘方,在c語言中,表示位異或,是乙個位操作符,在c語言中用math.h中宣告的pow 函式計算乘方 pow 2,20 可以計算2的20次方 不能這樣表示的,2 20應該用乙個庫函式pow 它的表示方式是 比如 x y表示為 pow x,y 但是要注意的是,在這裡x,y還有最後的值都應應...

下面這句話中為什麼用knowing?可以用to know嗎

樓主這是糾結動名詞和動詞不定式引導定語從句的區別,其實我也挺糾結的。不定式作定語要放在它所修飾的名詞之後,表示乙個將來的動作,即不定式的動作發生在謂語之後,而動名詞做定語時,和它修飾的名詞之間有邏輯上的主謂關係,應該是主動關係,被動的話用過去分詞。所以我覺得這裡用knowing更合適。為什麼下面這句...

索愛k700c的電池可以用幾天

是呀,我用的也是這款機子呀,什麼都還可以,就是挺費電的呀,我這兩天下了乙個新遊戲,一直玩,1天不到就沒電了,還好是兩塊電池!還有個東東是我在網上看到的不知對不對 電池只能用一天 解決方案 用完電池自帶的電量後,首次充電充6 8小時,不能超過8小時,會保持電池的最大容量,一般情況下,待機可以2 3天 ...