c語言定義常量為什麼不建議用,c語言定義常量為什麼不建議用 define

2021-04-17 17:36:27 字數 1855 閱讀 7106

1樓:匿名使用者

c語言的常量就bai是使用#define定義的。你是說duc++吧?zhic++的常量推薦使用const 定義,因為#define只是dao單純的字元專替換,無法檢查資料型別,屬const定義常量需指明資料型別,利於編譯器進行型別檢查。

2樓:匿名使用者

1、那是因bai為對於#define定義,編譯du器會存放在一zhi個記憶區dao域,這個記憶區域相當於我專們稱為巨集

屬為了不把有需要的裝進這個區域,我們只把有必要的,特殊的放進去2、當用#deifne定義的量是不能更改的,這樣就沒法迴圈使用了。

3樓:匿名使用者

這個,看常量型別,如果程式中大量使用且以後可能要經常改變這個常量的值,還是用#define比較方便,否則的話就沒有必要了!

4樓:知識哥哥

樓上的哥們 你用什麼定義的常量可以賦值呢?

5樓:匿名使用者

函式中不能再被重新賦值!

c語言中常量定義和巨集定義有什麼區別?

6樓:劉文正粉絲

區別大了個去了.

巨集定義是預處理命令.

#defien a 3

執行後, 前處理器把會正文所有全字匹配的a, 全部替換為3,那麼, 最後的**進入編譯器的**,

1 + a, 是變成1 + 3的.

而const int a = 3;

這個是不在前處理器的管理範圍之內 ,這個就是編譯器的工作了, 有些編譯器不會為它分配空間, 直接把它加入符號表中, 也就是說, 常量不再是0123456789這10個數, 而是0123456789a這11個數, 那麼a就是被定義成3了, 所以符號表裡的內容是01234567893.

而有些 編譯器會為它分配空間.

你不知道它們的區別, 說明你學巨集的時候, 並不知道巨集的原理.

7樓:金色潛鳥

巨集定義 是編譯前的預處理。

#define a 3 是在程式正式編譯前,做 token a 的字串替代,凡 token a 都用 3替代, 替代完了再開始編譯。

const int a = 3; 是 變數宣告和初始化。只是強調了 a 是 常量,不能用來做 「左值」,即,數值不能改變。

8樓:匿名使用者

符號常量 #define pi 3.1415926f;

常值變數 const float pi 3.1415926f;

網頁連結

c語言中定義常數變數怎麼定義 用define的那種

9樓:

因為來define是一種巨集定義,源所以他屬於一種全域性型別,不需要在函式中定義,只要在源**開頭定義的話,整個原始檔都可以使用該變數,假如要要定義常數π,那就#define pi 3.1415926就可以了

例如#include

#define pi 3.1415926

int main(...)

void function(...)

有不懂追問吧,望採納

10樓:百小烏

#define pi 3.1415926

c語言中#define定義的符號常量(明顯常量)編譯程式前真的被替換了嗎?

11樓:匿名使用者

不會替換雙引號內的巨集,具體你可以加編譯引數可以直接獲取到替換之後的內容。

12樓:樊德文字鳥

#define(即巨集定義)是在程式預編譯時執行替換功能,作用是加快程式執行速度,減少記憶體空間開銷

C語言中字元常量有什麼用,C語言中字元常量與字串常量有什麼區別?

字元常量 在c語言中一個字元常量代表ascii字符集中的一個字元,在程式中用單引號把一個字元括起來作為字元常量。大小寫字母代表不同的字常量 單引號中的空格也是 字元常量只能包含一個字元 字元常量只能用但括號括起來。比如是常用字元的acii a 97 a 65 常量一般指隨時拿過來就可以用的,並且是不...

c語言中為什麼用巨集定義字元常量(字母)可以賦值給字元

因為巨集是一個簡單替換,所以c語言中用巨集定義一個字元常量 一個字母 可以內賦值給字元變數。實質容是在編譯之前會把巨集替換掉,然後再編譯。例如 define a 5 void main 在編譯之前a已經被替換成5了,所以就可以賦值給num。漢字根據編碼方式不同,所佔的大小2 4個位元組 不等,漢字賦...

c語言中為什麼a 0不是字元常量?為什麼a 1 a是錯的?a a 1表示什麼

1.你這個 不bai是單字元,是三個字元,嚴格du說你這個是zhi一個字串,你dao這個是一個值,左邊沒有常回量名 2.賦值答號的左邊不能是表示式,只能是變數,這個不管是什麼語言都是這樣規定的 3.a a 1,應該是先a a a,然後a a 1 a 看到了嗎?這個是字元常量,你那個是字串常量 c中字...