[英]What is the difference between captures and parameters in a C++ laambda expression?
[英]In C++, what is the difference between an expression and a literal?
我的書將表達式定義為“具有值的編程語句”,將文字定義為“直接寫入程序源代碼的一段數據”,但我仍然無法區分兩者。 例如,3+3 是一個文字 AND 一個表達式,還是只是一個表達式? 為什么?
int number = 2+2;
這整個語句是一個表達式,還是正確的值? 為什么? 整個語句的值為 4,那么整個語句肯定是一個表達式嗎?
在我看來,表達式通常涉及運算符,而文字涉及單個數據,如 4、“Hello”、'A' 等。我也理解文字可以是表達式,因為一元運算符如 - 或 + . 我的想法正確嗎?
表達式是指定計算的運算符和操作數序列。 表達式可能產生一個值並可能導致副作用。
文字是以下之一:
我不會嘗試給出每一個的正式定義,但每個基本上只是一個值。
還有一種類型的文字有點特別:
盡管用戶定義的文字是文字,但文字的值是根據表達式的計算結果定義的。
參考:
表達式:[expr]
文字:[lex.literal]
(對於那些不熟悉它的人,方括號中的標記是用於指定 C++ 標准中的部分的符號)。
例如,文字類似於數字 7。 當轉換為匯編代碼時,文字 7 在代碼中仍然很明顯:
MOV R1, 7 ; move the number 7 as a value into register R1
表達式是需要計算的東西。 一般來說,你會發現一些類似C=A+B;
其中A+B
是一個表達式。
表達式是一系列運算符及其操作數,用於指定計算。 表達式求值可能會產生一個結果(例如,對 2+2 的求值會產生結果 4)並可能產生副作用(例如,對 std::printf("%d",4) 的求值會在標准上打印字符 '4'輸出)。
http://en.cppreference.com/w/cpp/language/expressions http://en.cppreference.com/w/cpp/language/expressions#Literals
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.