22有以下定義語句編譯時會出現編譯錯誤的是

2022-02-25 13:43:11 字數 3068 閱讀 8027

1樓:匿名使用者

22. char a='aa'; a是字元變數,只能儲存一個字元!

23. %c 列印字元 %d 列印整數,至於是什麼值,請對照ascii表檢視!

33. 答案:a。 但樓上解釋均有誤!

void (*pf)(); 定義函式指標pf,指向返回值為void的函式,引數任意

pf = fun; 正確!

pf = &fun; 正確!c照樣認可這種寫法,只是不同的觀點而已!請參看《c和指標》

void *pf(); 宣告pf函式,沒有引數,但返回void *型別!只是宣告,還沒有定義!

另外,pf 本身是地址,不是變數,不可以更改!故pf = fun;錯誤!

再看這一句

首先宣告pf為函式指標,它指向的函式返回void型別,

引數為int和char(不是char *,否則就對了)

而fun的引數2為char *型別,故兩者型別不匹配,pf=&fun; 錯誤!

2樓:

22 char a='aa'; //字元變數只能儲存一個字元,aa是兩個字元。

23 printf("%c,%d\n",c1,c2); //c1以%c輸出,結果是字元。c2以%d輸出,結果是數值。

33 void fun(int n,char *s)函式指標的定義就是將fun的位置換成:(*指標名),因此正確答案是d,並不是a。

3樓:

1、e,68 這個為什麼第一個是字母,第二個是數字那??

因為你的列印輸出型別定義不一樣 printf("%c,%d\n",c1,c2); 輸出兩個值:%c意思是輸出字元,對應的俄式c1變數,%d意思是輸出整數,對應的是c2。

2、a,d中, (*pf)()都是函式指標變數,d不對的原因是 c 語言中函式即是函式的跳轉地址,本身就是指標,須直接賦值給函式指標變數,不用再用取地址操作符&;b ,c 中void *pf()意思為p為帶回一個指標的函式,即 p是一個函式,所以不能賦值,關於指標定義看書吧,這個樹上有的,主要記住操符之間的優先順序然後依次結合分析……希望對你有幫助

,編譯時會出現編譯錯誤的是a) char a=』a』; b)char a=』\n』; c) char a=』aa』; d)char a=』\x2d』;

4樓:艾絲凡怠速放緩

答案:c

簡要分析:

char a='aa'; a是字元變數,只能儲存一個字元!

具體分析:

a中a等於字元a

b中\為轉義字元,\n表示換行符,所以a等於換行符c中''中只能包含一個字元來表示該字元常量。你可以這樣寫char *a="aa";表示a指向字串常量的首地址。

d中x表示十六進位制數,16進位制的2d轉換為十進位制為45,即為字元『-』

'\x2d'就是'\-',所以a=『-』

所以c選項錯誤

以下定義,編譯時出現錯誤的是a char c='aa'; b char c='\x2d';

5樓:倒黴熊

a 很明顯是一個字串,包括兩個字元a。而不是一個字元。

b 是正確的, \x表示後面的是十六進位制, \x2d 這三個是一個字元,這是轉義字元使用的一種。一般的課本上有個轉義字元表,會列出來的。

6樓:

char c='a'; char c= 0x2d;

有下面程式段 char a[3],b[ ]="china";a=b;printf("%s",a);則是否編譯錯誤?

7樓:匿名使用者

有編譯錯誤。

陣列之間拷貝不能直接使用a=b,而是可以使用字串拷貝函式strcpy。而且陣列a的長度只有3,而陣列b有5個字元,還不包括結尾字元。

字串拷貝函式strcpy格式:strcpy (字元陣列名1,字元陣列名2) 的功能:把字元陣列2中的字串拷貝到字元陣列1中。

串結束標誌「」也一同拷貝。字元數名2, 也可以是一個字串常量。這時相當於把一個字串賦予一個字元陣列。

本函式要求字元陣列1應有足夠的長度,否則不能全部裝入所拷貝的字串。

8樓:刑梓楠肖添

會輸出編譯錯誤資訊,字元陣列的複製要用strcpy()函式,不能這樣直接用賦值操作符賦值。

9樓:

應該是無法通過編譯的

#include

int main()

編譯器提示a=b;這句中必須是一個可更改的左值!注意陣列名相當於一個指標常量,而不是絕對等同於指標!

我修改的**,這樣子就可以了:

#include

int main()

10樓:匿名使用者

編譯時不會報錯,

輸出china

但是問題是,a的3個位元組後的空間如果有儲存資料,那麼,該儲存資料會被覆蓋掉

void main() { char a,b; a='a'; b='b'; a=a-32; b=b-32; printf("%c,%c\n%d,%d\n",a,b,a,b); }

11樓:追風少年天蠍

a=a-32; b=b-32;改為 a=』a『-32; b=『b』-32;加單引號表示是字母a.不然就是變數a

12樓:

#include

void main()

可以編譯執行的!

13樓:匿名使用者

a,b65,66

press any key to continue#include

int main()

14樓:蓉雪球

這個程式本身沒什麼邏輯錯誤,請問您編譯錯誤的**能發一下嗎?

常見的錯誤可能是標點非英文吧~

若有以下定義,則陣列元素a的值是int a31,23,2,44,5,61,

a 2 2 6。在c語言中,a 常量1 常量2 常量1可以沒有,但是常量2必須有。在編譯器進行編譯時,會有這兩種情況,下面分別說明。1 若指定了 常量1 常量2的值,為了方便說明,先假設常量1 2 常量2 2,那麼a 0 a 1 例如,a 2 2 那麼a 0 a 1 2 若常量1沒有時,會按照常量2...

設有以下定義,則下面給出的語句中錯誤的是int a 0 float b 1 25 char c Adefine d

c是錯誤的,因為a b是常量了,選c,是因為增一減一是一元運算子,只需要一個運算元,而這種運算元必須是變數,不能是常數或者是表示式。而c答案 a b 就是表示式了 有以下定義int a 0 double b 1.25 char c a define d 2下語句中錯誤的是a a b b c c d ...

設有如下定義 char aa 2abcdABCD則以下說法中正確

正確答案是c。因為aa陣列本身就是指向字元的指標陣列。應該選d 這種定義方式 char aa 2 定義的是一個指標陣列,陣列的成員是字元指標。在這裡,陣列中的兩個字元指標,分別指向了常量字串 abcd 和 abcd 換句話說,這兩個指標的值就是這兩個字串的首地址。a.陣列中元素的值不是字串,而是字串...