首页
/
每日頭條
/
生活
/
c在數學上表示什麼含義
c在數學上表示什麼含義
更新时间:2024-12-21 22:45:13

c在數學上表示什麼含義?左值右值什麼是左值?什麼是右值?左邊的值和右邊的值?不不不,這樣不全面,先給你一個淺顯的解釋吧,左值就是可以被賦值的類型,右值就是不可以被賦值的值跟着下面的例子來一探究竟吧,我來為大家講解一下關于c在數學上表示什麼含義?跟着小編一起來看一看吧!

c在數學上表示什麼含義(左值右值的基本解釋)1

c在數學上表示什麼含義

左值右值

什麼是左值?什麼是右值?左邊的值和右邊的值?不不不,這樣不全面,先給你一個淺顯的解釋吧,左值就是可以被賦值的類型,右值就是不可以被賦值的值。跟着下面的例子來一探究竟吧。

最簡單的左值右值

int a = 2;

這個代碼中a位于等于運算符左邊,數值2位于等于運算符右邊,所以a是左值,2是右值。問題來了:那我要是把2放在左邊,2是不是就成左值了呢?剛入門的c語言程序員都知道這是不可能的,但是我們還是來寫一下,看看編譯器報錯了什麼。

int a = 1; 2 = a;

當編譯之後,給出以下報錯:

[Error] lvalue required as left operand of assignment

翻譯過來就是:左操作數需要賦值。也就是說左操作數必須可以被賦值,2可以被賦值嗎?當然不可以了。

再來看一個例子:

int fun(){ return 4; } fun() = 2;

這個代碼正确嗎?肯定是錯誤的,為什麼呢?因為函數不能被賦值,用左值右值來解釋就是fun()函數是一個右值。不信的話我們來看看報錯:

總的來說,c 左值是可以被賦值,可以獲取到地址的值,右值表示無法獲取地址的對象,有常量值、函數返回值、lambda表達式等。無法獲取地址,但不表示其不可改變,當定義了右值的右值引用時就可以更改右值。

左值引用

我們知道c 中有引用這一概念,具體使用如下:

void function(int& a);

這樣函數中,參數使用int類型變量傳遞的時候,就會被轉化為引用了。那麼問題來了,我要是放一個數字會怎麼樣呢?代碼如下:

#include <iostream> using namespace std; int fun(int& a) return a; } int main(int argc, char** argv) { fun(2); return 0; }

報錯如下:

[Error] invalid initialization of non-const reference of type 'int&' from an rvalue of type 'int'

翻譯過來就是:從類型'int'的右值中無效初始化類型'int&'的非常量引用。其實C 是禁止将右值綁定到左值引用的,那麼怎麼才能綁定呢?

右值,我們前面說過,它是不可被賦值的,不可被改變的,左值引用呢,可以被改變,那我們給左值引用加一個const試試。代碼修改如下:

#include <iostream> using namespace std; int fun(const int& a){ return a; } int main(int argc, char** argv) { fun(2); return 0; }

這次編譯通過了,其實c 允許使用const修飾左值引用,這樣右值就可以綁定到左值引用上面了。

int &a = 1; //Error const int &a = 1; //Ok

右值引用

在c 中允許定義右值引用,如下:

int&& a = 1;

這樣就可以訪問右值引用的地址了。

左值右值、左值引用右值引用的相互轉換

左值==>右值

當需要時,系統可以自動将左值轉化為右值。例如:

int a = 1; int b = 2; int c = a b; //a、b被轉化為右值

右值=/=>左值

右值到左值的轉換目前還不行

左值==>左值引用

void function(int& a); int a = 5; function(a);


右值==>右值引用

int&& a = 1;

左值==>右值引用

c 中使用move語義将左值轉化為右值引用,具體使用std::move()函數

int a = 5; int&& b = std::move(a);

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
黑胡椒煎蛋怎麼做
黑胡椒煎蛋怎麼做
1、鹽一小勺尖放碗裡。2、黑胡椒一小勺尖放碗裡。3、醬油一勺放碗裡。4、醋一勺放碗裡。5、将鹽黑胡椒醬油醋攪勻備用。6、鍋裡熱油,不必放太多。7、把蛋放鍋裡小火慢慢剪。8、煎制金黃色澆入黑椒汁,出鍋開吃。
2024-12-21
怎麼開啟京東小金庫
怎麼開啟京東小金庫
第一、京東小金庫是京東金融裡的一個選項,相當于錢包,我們可以把錢轉入京東小金庫裡,既安全又可以賺取收益。首先,下載京東金融APP。第二、下載了APP以後,用自己的電話号碼就可以注冊賬号了,這個比較簡單就不講解了。第三、在京東金融APP的首頁,就有一個京東小金庫,然後點擊進去。就可以填寫自己的真實名字...
2024-12-21
京東如何實名認證
京東如何實名認證
第一、打開手機,找到京東,進入首頁面。第二、進入之後,點擊右下角的我的,進入該頁面。第三、點擊右上角的設置,進入設置界面,如圖所示。第四、進入之後,找到實名認證,點擊并進入。第五、進入之後,填寫個人信息,填寫完成後,點擊下一步進入下一頁面。第六、填寫銀行卡号和預留手機号,填寫完成之後,點擊下一步,如...
2024-12-21
軍訓口号
軍訓口号
軍訓空号有:1、團結互助,自律自強。2、團結進取,奮力拼搏;齊心協力,共鑄輝煌!3、團結奮進,自律自強;愈挫愈勇,為國争光!4、刻苦訓練,自強不息;團結互助,勇争第一!5、團結一緻,奮力拼搏;争創一流,展我雄風!6、激情飛揚,超越夢想;挑戰極限,鑄就輝煌!7、努力學習,刻苦訓練;團結互助,争創佳績!8、軍中驕子,校園精英;勇往直前,誰與争鋒!9、服從命令,聽從指揮;團結互助,揚我班威!10、政治合
2024-12-21
保險公司不理賠怎麼辦
保險公司不理賠怎麼辦
1、如果保險公司懷疑你騙保而不理賠的話,可以投訴到他們的上一級、一直到省、甚至到國家,上面就會重視您的問題,很快就會得到解決。如果超過一個月您還沒能得到解決,就直接可以通過民事訴訟起訴保險公司了。2、保險公司不理賠,可以向當地保監局投訴,或者仲裁,如果都不能解決的話,可以起訴。3、向銀保監會投訴,可...
2024-12-21
Copyright 2023-2024 - www.tftnews.com All Rights Reserved