有關C語言解釋下邊問題一cChar1 aa不是字元常量嘛?字元常量不是不能賦值嘛

時間 2021-06-25 14:42:58

1樓:零能量超動力

回答:cchar1='a' 'a'不是字元常量嘛?字元常量不是不能賦值嘛?

'a'是常量,人家沒有給常量賦值啊,是給 cchar1 這個變數賦值,把'a' 賦給cchar1 ;

printf("%c\n",cchar1);

printf裡面的雙引號內為輸出內容,%c是按照字元輸出,如果是%d, 則是按照10進位制整數輸出,你可以查c語言書,

既然是既然是輸出數字,問什麼不直接寫數字,,是因為如果你要輸出一個變數,比如,程式中輸入兩個數字,然後輸出他們的和,他們的和儲存在一個變數中,你當然是輸出這個變數了,

2樓:匿名使用者

%c是佔位符,表示在這輸出一個字元,也就是逗號後面的cchar1。

例如

%d表示在這輸出一個整數,執行後為:

10+20=30(這有一個換行)

常用的佔位符有:%f浮點數,%d十進位制整數,%c字元,%s字串。

cchar1='a';的意思是把'a'賦值給cchar1。cchar1是變數。

而你說的字元常量不能賦值的意思是不能給它賦值,而不是不能把它賦值給別的變數。即:'a'='b';這個是錯誤的。char a='a';這個是正確的。

例如:const int a=100; //我這定義了一個常量a。const可以限定一個變數不允許被改變。

a=200; //這就錯誤了。

3樓:匿名使用者

char cchar1 = 'a';//將字元'a'賦給cchar1printf("%c\n",cchar1);//將cchar1以字元形式輸出,當然也可以其他相容的格式輸出

//比如:printf("%d\n",cchar1) 這樣就會輸出一個數字,90多吧,自己試試就知道了

********************=cchar1 = 'a';是給字元變數cchar1賦值,就好比 int i = 100;

4樓:匿名使用者

問題一:cchar1='a'是把變數cchar1的值賦為字元常量a,你應該是用char cchar1;定義的,這樣定義的是字元,是可以賦值的,但要用單引號『 』。若為char cchar1;則是定義的字串,這是不可以用cchar1=「abcd」賦值的,但可以用初始化的方式賦值char cchar1=「abcd」;當然還有使用輸入函式和strcpy()等方法也是可以的。

問題二:%是格式說明符,%c即反映後面變數cchar1是個字元,最後結果顯示的是cchar1的值,相當於把cchar1的值代到%c這個位置,而%s代表輸出字串,%d代表輸出整數,%f代表輸出單精浮點數,%lf代表輸出雙精浮點數,其他的可以自己去查。可以直接輸出數字,printf(「100\n");是沒有問題的,但經常我們是想輸出某個整型量的值,就要用類似printf(「%d\n",c);的語句了。

舉個例子:

#include

int main()

這樣就可以實現簡單的加法了。

5樓:

問題1:字元常量作為右值當然是可以的

問題2:逗號前面定義的是輸出格式,%c表示要求用字元格式輸出

6樓:匿名使用者

cchar1 = 'a';//cchar1變數,'a'是常量。

const char t = 'a';//這個t是常變數

有什麼問題直接hi我

7樓:匿名使用者

cchar1是變數,為變數賦值就是cchar1='a';

上面你說的c是代表輸出字元的意思,換成其他的輸出就不一樣了。好好學學吧,多看書,我看你是根本什麼都不會

8樓:匿名使用者

逗號前面是一種輸出的形式,根據輸出的內容而定,如果你輸出的是字串是%c,如果輸出的是整數是%d,函式printf裡面要是輸出的是整數,那就是%d。

讓我來跟你舉個簡單的例子:

求兩個數的和。

main(){

int a,b,c;

printf("請輸入a,b的值:");

scanf("%d%d",&a,&b);

c=a+b;

printf("%d/n",c);

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

9樓:匿名使用者

1.你這個

不bai是單字元,是三個字元,嚴格du說你這個是zhi一個字串,你dao這個是一個值,左邊沒有常回量名

2.賦值答號的左邊不能是表示式,只能是變數,這個不管是什麼語言都是這樣規定的

3.a+=a+1,應該是先a=a+a,然後a=a+1

10樓:瞪附吃屹

'a' ,看到了嗎?這個是字元常量,你那個是字串常量;c中字元常量是單引號括起來的一個字元

關於c語言問題

11樓:金色潛鳥

void vtaskstartscheduler( void ) privileged_function;

是函式定義,函式名 vtaskstartscheduler,( void ) 表示該函式是無參函式, 前面的 void 表示這個函式無返回值。 privileged_function 是巨集,預編譯期間,執行文字替代, 替代後這部分應形成 函式體。

12樓:完娟居晴波

c2為char型,1位元組

322超過1位元組表示範圍,溢位後截斷為66,即字元'b'的ascii碼值

13樓:麼彰疏凌曉

1、有定義:int

n=0,*p=&n,**q=&p;,則以下選項中,正確的賦值語句是(d)

a.p=1;

b.*q=2;

c.q=p;

d.*p=5;

解:*p為一級指標,其中p為指標的地址,**q為二級指標,其中*q為指標的地址,只能給變數或指標變數賦值,不能給地址賦值,所謂地址,就是由acs碼構成,簡單的說,就是每個人都有一個名字(地址)一樣,目的是要區分每個人(地址中儲存的值)。

2、若有說明:int

n=2,*p=&n,*q=p;,則一下其非法的賦值語句是(d)

a.p=q;

b.*p=*q;

c.n=*q;

d.p=n;

解:同上。

3、有以下程式:

void

fun(char

*a,char

*b)main()

(char

c1='a',c2='a',*p1,*p2;

p1=&c1;

p2=&c2;

fun(p1,p2);

printf("%c%c\n",c1,c2);

}程式執行後的輸出結果是(a)

a.ab

b.aa

c.aa

d.bb

解:這是指標傳值(地址傳值),實參傳給形參,其實就是p1(實參地址)與a(形參地址)共用一個地址,p2與b共用一個地址,a=b並沒有改變地址a中儲存的『a』,而是讓*a指向地址b,進而改變或控制地址b中存放的值,所以c1=『a』不變,而(*a)++,就是字元『a'的asc碼加1,也就是字元『b'那麼地址b中的值就變成了字元『b'。

4、以下程式執行後的輸出結果是___1_1_1_1___

main()

}解:上面的q等於1吧,

當i=1;n[1]+q=n[0]*2+1=0*2+1=1;

i=2;n[2]+q=n[1]*2+1=0*2+1=1;

i=3;n[3]+q=n[2]*2+1=1;

i=4;n[4]+q=1;

5、有如下程式:

#include

main()

若文字檔案f1.txt中原有內容為:good,則執行以上程式後檔案f1.txt中的內容為(c)

a.goodabc

b.abcd

c.abc

d.abcgood

解:簡單的說就是以「w(寫生成)」開啟的檔案,檔案內的原始資料將被刪除。這東西不是一兩句就能解釋清楚。

同學,你的c要好好加油啊,這都是些很基本的問題。

14樓:逢恩柔語

c的函式實際上就是一個**功能模組,完成一定的操作。有些操作並不需要有什麼事先設定的操作物件,如在螢幕上顯示系統的當前時間,就可以寫一個沒有引數的函式把系統時間字串輸出的螢幕上就可以了——類似這樣的需求是很多的,都可以編制無參函式實現。

c語言中,為什麼不能對字元指標變數指向的字串再賦值?

15樓:大野瘦子

因為抄c語言中,凡是以""括住的形式直接出襲現,而且你又沒有為其分配記憶體空間的字串都是常量字串,是不能修改其值的。

這樣:char a[6]="hello";

a[2]='c';

就可以了。

這裡你為hello分配了一個長度為6的字元陣列空間來存放。

16樓:種令芮德曜

char*

a=為什麼不能修改,這個要涉及程序佔用的記憶體分段,大概分為**區,只讀

區,全域性區專,堆屬區,棧區。"hello"作為一個字串字面值,是被放在只讀區,只讀顧名思義就是不能修改的。char*

a="hello",相當於把hello的地址賦給了a,故而不能對a指向的內容進行修改。char

a="hello",這樣賦值的就是一個字元陣列。字元陣列a是在棧區裡申請的一個空間給a,然後把只讀區的"hello"進行了一次複製再賦值給a,這樣a的指向是能修改的。

17樓:匿名使用者

c primer plus 一書中寫到:「內容」為字串面量,其被視為常量,故無法再進行修改。只能對其指標的值(改變位置)進行修改,不能改變其內容。

18樓:

這不是絕對的:

bai當指du

針指向的字串是zhi常字串時當然不能再賦dao值,因為目標是「常量專」,而當指標

屬指向的字串不是常字串時就可以再賦值,比如用動態申請記憶體方法建立的字串。具體說就是用char *p="abcqer12345";這種方法定義字串是不能通過指標改變內容的,原因是這個定義確定了abcqer12345是字串常量——因為char *p="abcqer12345";被編譯器解釋為「建立一個字串常量abcqer12345,並把它的首地址(就是a的地址)賦給char *型指標p」——既然是「常量」,自然就不能更改。

19樓:匿名使用者

c語言bai中,凡是以""括住的形式直du接出現,而且你zhi又沒有為其分配內dao

存空間的字

符串專都是常量字串,是屬不能修改其值的。

char a[6]="hello";

a[2]='c';

就可以了。這裡你為hello分配了一個長度為6的字元陣列空間來存放。

20樓:匿名使用者

char *a="hello";

''hello''是常量,所以a指向的是常量區,不能對於常量區的元素進行賦值

21樓:匿名使用者

char *a="hello";這個形式的定義是屬於字串常量,不可以修改的.

有關大一C語言程式設計問題,有關大一C語言程式設計問題?

include include int findnumber char s int num 0 while s if s 0 s 9 num s return num int findspace char s int num 0 while s if s num s return num int m...

有關C語言的小問題,C語言報錯的問題?

line 69 函式showarr,parr是指向結構體的指標,你這裡要訪問的應該是它的成員陣列parr pbase void showarr struct arr parr ps1 這個問題在編譯階段通常會有警告的,因為printf格式符 d是整數,你給的parr i 跟它是不匹配的,會引起 fo...

c語言基礎問題,求解釋

這涉及到c語言的一些規定 第一就是自動向上轉換 也就是說 佔用空間少的型別和佔用空間多的型別運算,運算結果轉換為佔用空間多的型別 這是為了防止運算結果放在少空間發生溢位 int 佔用4個位元組 double 佔用8個位元組 運算結果 為double型別 這是因為最後加的x為double 型別的 如果...