簡體   English   中英

在 C++ 中,表達式和文字有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM