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

2021-03-11 23:50:30 字數 5213 閱讀 5904

1樓:別野雪巢梧

因為巨集是一個簡單替換,所以c語言中用巨集定義一個字元常量(一個字母)可以內賦值給字元變數。實質容是在編譯之前會把巨集替換掉,然後再編譯。

例如:#define a 5

void main()

在編譯之前a已經被替換成5了,所以就可以賦值給num。

2樓:佟佳成和榮愉

漢字根據編碼方式不同,所佔的大小2~4個位元組

不等,漢字賦值給字版符變數,只顯示權第一個位元組,出問號就不奇怪了

用漢字賦值給字元數陣列然後在顯示的話,一定要考慮編碼方式問題,你的終端支援哪種就選擇哪種,否則亂碼

3樓:銳語夢戰靖

字元常量是

copy用單括號括起來的一個bai字元。

有兩種du表示方法:

一種是用zhi該字元的圖形dao

符號,如'b'

,'y','*'。

另外還可以用字元的ascii碼錶示,即用反斜符(\)開頭,後跟字元的ascii碼,這種方法也稱為轉義序列表示法,具體方法是:有兩種形式:

一種是用字元的八進位制ascii碼,表示為:\ddd這裡,ddd是八進位制值。

另一種使用字元的十六進位制ascii碼值,表示為\xhh

這裡hh是兩位十六進位制值。

如:'a'

,'\101'

和'x41'都表示同一個字元常量。

轉義序列表示法還可以用來表示一些特殊字元,用來顯示特殊符號或控制輸出格式。

下面是常用的特殊轉義字元。

為什麼c語言中不能用scanf()函式反覆對同一個字元型變數賦值

4樓:千鋒教育

int a;

scanf("%d",&a);

scanf("%d",&a);

scanf("%d",&a);

a是最後一次輸入的那個值

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

5樓:匿名使用者

1、因為巨集定義實質是一種替換,雖然看起來是字元,實際上最終是被替換成其他常熟或者值。

2、巨集定義中的識別符號都採用大寫,這是程式設計中一種約定俗成的習慣:

1)巨集替換不做語法檢查,所以在使用的時候要格外小心2)巨集替換通常在檔案開頭部分,寫在函式的花括號外邊,作用域為其後的程式,直到用 問好

3)# u n d e f 命令終止巨集定義的作用域4)不要在字串中使用巨集,如果巨集名出現在字串中,那麼將按字串進行處理.

6樓:匿名使用者

因為巨集是一個簡單替換,所以c語言中用巨集定義一個字元常量(一個字母)可以賦值給字元變數。實質是在編譯之前會把巨集替換掉,然後再編譯。

例如:#define  a    5

void main()

在編譯之前a已經被替換成5了,所以就可以賦值給num。

7樓:匿名使用者

漢字根據編碼方式不同,所佔的大小2~4個位元組不等,漢字賦值給字元變數,只顯示第一個位元組,出問號就不奇怪了

用漢字賦值給字元數陣列然後在顯示的話,一定要考慮編碼方式問題,你的終端支援哪種就選擇哪種,否則亂碼

8樓:匿名使用者

#define namehello "wendy"

#include

#include

void main()

9樓:匿名使用者

c裡面不支援漢子,你用vc++6.0試試,那個可以顯示漢子

「不能把一個字串常量賦予一個字元變數」這句話怎麼理解,不是有巨集定義嗎?

10樓:悟空啊

程式的儲存區分為4塊 1、全域性靜態區(

儲存全域性變數、靜態變數) 2、字元常量版區 (存放字串常量) 3、棧權區 (區域性變數) 4、堆區 (動態分配的記憶體) 字元變數儲存的內容不是字串常量,可以被修改 字串常量是不能修改的 巨集定義的不是變數,只是一個標記,在程式預編譯的時候就是進行簡單的替換操作

記得采納啊

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

11樓:匿名使用者

1、因為巨集定義實質是一種替換,雖然看起來是字元,實際上最終是被替換成其他常熟或者值。

2、巨集定義中的識別符號都採用大寫,這是程式設計中一種約定俗成的習慣:

1)巨集替換不做語法檢查,所以在使用的時候要格外小心2)巨集替換通常在檔案開頭部分,寫在函式的花括號外邊,作用域為其後的程式,直到用 問好

3)# u n d e f 命令終止巨集定義的作用域4)不要在字串中使用巨集,如果巨集名出現在字串中,那麼將按字串進行處理.

12樓:關韶侍荏

因為巨集是一個簡單替換,所以c語言中用巨集定義一個字元常量(一個字母)可以賦值給字元變數。實質是在編譯之前會把巨集替換掉,然後再編譯。

例如:#define a 5

void main()

在編譯之前a已經被替換成5了,所以就可以賦值給num。

在巨集定義 #define pi 3.14159中,用巨集名pi代替一個 a) 單精度數 b) 雙精度數 c) 常量 d) 字串

13樓:

答案是d 編譯預處理的時候,巨集名pi將被字串「3.14159「代替,這一替換過程稱為巨集

巨集的定義格式為

#define 巨集名 字串或者字元

14樓:匿名使用者

c define是定義常量的

15樓:匿名使用者

不用我說了吧,進來看看。

c語言中如何定義字串?

16樓:yangzhi涯

可以用陣列或指標

陣列:char s[80]="abcd";或者char s[80]=;     /*說明:自動加字串結束標誌:\0*/

char s[80]=;

指標:char *s;char*s="abcd";

c語言是一門通內用計算機程式設計容語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。

17樓:匿名使用者

一維和二維的都可以;

一維的情況如下:

1,char string0[10];

2,char string1="prison break";

3,char string2[100]="michael scofield";

1句表示定義個長度為10的字串,但回未賦值,2句表示定義了一答個字元陣列string1,並進行初始化,使得其長度自動為13(字串」prison break"中的字元個數加上結尾的'\0'),3句定義了一個有100個元素的字元陣列string2,並初始化了17個元素("michael scofield";加上結尾的'\0');

二維的情況如下:

1,char string3[6][30];

2,char string3[6][30]=;

此句表示有6個字串,每個字串的長度為30,每個字串的初始值與「joy","phosee","monses","chandele","ross","rather"相對應;

18樓:天雲一號

可以通過字元陣列或字元指標來定義字串,也可以用巨集定義對常量字串進版

行定義。

下面通過權

舉例來分別進行說明:

char str1 = "helloworld";  // 通過字元陣列來定義字串"helloworld",陣列中每個儲存單元存放一個字元

char *str2  = "helloworld";  // 通過字元指標來定義字串"helloworld",指標str2指向一個存放字串"helloworld"的連續地址單元的首地址

#define str3 "helloworld";  // 通過巨集定義來定義字串"helloworld",等價於str3="helloworld"

19樓:閃喆黃馨

c語言每個字串後面都有一個\0作為結尾,你的b沒有\0作為字串結尾,所以後面記憶體中的內容都一起顯示了

在你的for迴圈結束以後加一個b[t]

='\0'

20樓:簡聖祭蓓

因為字串是以'\0'結尾的哈,再則你定義的字串長度是80哈,如果沒到指定的長度,系統會自動補充的,就正如你的程式執行效果;有一下的解決方法:

1.拷貝後,在字串末尾新增'\0';

2.輸入你指定的字串長度哈

21樓:告煦賀皓

字串結尾有一個'\0'。strlen(string)只計算實際長度,不計算'\0'.這導致你的for迴圈沒有複製'\0',導致b沒有結束標誌,於是就出現了那麼多的「燙」。

修改方法:t=

strlen(a)+1;

22樓:初人江驥

for(i=0;i<=t;i++)

這個t只包含總得字元個數,沒包含最後的結束符,把它也傳給b就好了

23樓:匿名使用者

用字元陣列或者string定義

24樓:匿名使用者

char * a = "字串";

在巨集定義#define pi 3.1415926中,用巨集名pi代替了一個字串還是常量呢?

25樓:匿名使用者

#define 定義的就是個常數,沒有型別資訊的要限制型別你可以用

const type costant = value例如const float pi = 3.1415926ps:c裡沒有字串型別

26樓:我行你素

字串,常量要用const double pi 3.141592 定義

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

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

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

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

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

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 define fudgf y 2....