两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

  • 歡迎訪問C語言網(wǎng)www.sztianhecheng.cn 比賽欄每月有獎(jiǎng)月賽!舉辦比賽聯(lián)系QQ:2045302297
  • 問題反饋、粉絲交流 QQ群327452739 藍(lán)橋杯訓(xùn)練群:113766799 申請(qǐng)群時(shí)請(qǐng)備注排名里的昵稱
  • C語言研究中心 為您提供有圖、有料、解渴的C語言專題! 歡迎討論!

C語言中左值和右值的區(qū)別

編程經(jīng)驗(yàn) CTO 26999次瀏覽 0個(gè)評(píng)論

在C語言學(xué)習(xí)過程中,大家或許聽到過左值和右值的概念,甚至在調(diào)試程序時(shí)編譯器也會(huì)給出” left operand must be l-value ” 即左操作數(shù)必須為左值!,今天我們將為大家詳細(xì)解釋這兩個(gè)詞,以及兩者的區(qū)別!

 

簡(jiǎn)單而言,在賦值運(yùn)算符“=”左邊的就是左值,在賦值運(yùn)算符“=”后邊的就是右值,感覺像是廢話,但非常好理解。但更多時(shí)候,我們是為了學(xué)習(xí)和理解不同情況下左值和右值的區(qū)別,下面來舉例依次說明,著層深入,來讓大家解渴!

1.變量做左值和右值的區(qū)別:

如 x = 2;

這里x為整形變量,這里作為左值,代表的是一塊內(nèi)存單元,表示的是地址。

再如x = y;

現(xiàn)在看變量做右值情況,y做右值,這里呢就不在表示地址,而是代表該內(nèi)存單元上的值!然后賦給x。

2.常量做左值和右值的區(qū)別:

繼續(xù) x = 2;

這里2做右值, 2是一個(gè)常量,沒有任何疑問。

而如果 1 = 2;

這里我們看左值,是1是常量,這里就會(huì)有問題了,編譯會(huì)報(bào)錯(cuò)!因?yàn)槌A坎豢杀恍薷?、不可以被賦值!所以大家可能會(huì)聽過或見過”可修改/不可修改的左值”。

C語言中左值和右值的區(qū)別

3.數(shù)組名做左值和右值的區(qū)別:

例如有字符數(shù)組char a[100];

當(dāng)a做右值時(shí)候,我們可以把它賦給char *類型的指針,用來指向這個(gè)數(shù)組,這種情況下數(shù)組名做右值代表該數(shù)組首元素的首地址,是常量,是完全可以的。

而數(shù)組名無論右值和還是左值,都代表是地址,是常量,因此它不可以做左值,因?yàn)槌A坎豢杀恍薷?!所以不少同學(xué)試圖再定義數(shù)組之后再試圖對(duì)數(shù)組賦字符串都是錯(cuò)誤的!

C語言中左值和右值的區(qū)別

 

4.字符串常量做右值

字符串常量想必大家都很清楚,是用雙引號(hào)括起來的字符串,既然也是常量,也理所當(dāng)然不可以做左值,但做右值呢?

答案是,會(huì)表示該字符串在內(nèi)存中存儲(chǔ)位置的首地址。就就是char *? p = “dotcpp.com”;用法的原因。

 

 

以上四種,希望對(duì)大家深入理解左值和右值有幫助!大家有任何問題,請(qǐng)隨時(shí)留言討論!

 

C語言研究中心(www.sztianhecheng.cn)

C語言網(wǎng)提供「C語言、C++、算法競(jìng)賽」在線課程,全部由資深研發(fā)工程師或ACM金牌大佬親授課,更科學(xué)、全面的課程體系,以在線視頻+在線評(píng)測(cè)的學(xué)習(xí)模式學(xué)習(xí),學(xué)練同步,拒絕理論派,真正學(xué)會(huì)編程!還有獎(jiǎng)學(xué)金等增值福利等你!

C語言網(wǎng), 版權(quán)所有丨如未注明 , 均為原創(chuàng)丨本網(wǎng)站采用BY-NC-SA協(xié)議進(jìn)行授權(quán) , 轉(zhuǎn)載請(qǐng)注明C語言中左值和右值的區(qū)別!
喜歡 (81)
[jinyangH@aliyun.com]
分享 (0)
發(fā)表我的評(píng)論
取消評(píng)論
表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)