Hằng số C ++ / Literals

Hằng số tham chiếu đến các giá trị cố định mà chương trình có thể không thay đổi và chúng được gọi là chữ .

Các hằng số có thể là bất kỳ kiểu dữ liệu cơ bản nào và có thể được chia thành các số nguyên, các chữ số dấu phẩy động, các ký tự, các chuỗi và các giá trị Boolean.

Một lần nữa, các hằng số được xử lý giống như các biến thông thường ngoại trừ các giá trị của chúng không thể được sửa đổi sau định nghĩa của chúng.

Integer Literals

Một chữ số nguyên có thể là một số thập phân, bát phân hoặc hằng số thập lục phân. Tiền tố chỉ định cơ sở hoặc cơ số: 0x hoặc 0X cho hệ thập lục phân, 0 cho bát phân và không có gì cho thập phân.

Một số nguyên nghĩa đen cũng có thể có hậu tố là kết hợp của U và L, tương ứng với dấu và dài. Hậu tố có thể là chữ hoa hoặc chữ thường và có thể theo thứ tự bất kỳ.

Dưới đây là một số ví dụ về các chữ số nguyên –

212         // Legal
215u        // Legal
0xFeeL      // Legal
078         // Illegal: 8 is not an octal digit
032UU       // Illegal: cannot repeat a suffix
Sau đây là các ví dụ khác về các loại chữ số nguyên –
85         // decimal
0213       // octal
0x4b       // hexadecimal
30         // int
30u        // unsigned int
30l        // long
30ul       // unsigned long

Dấu phẩy động

Một chữ phẩy động có một phần số nguyên, một dấu thập phân, một phần phân số và một phần số mũ. Bạn có thể biểu diễn các chữ số dấu phẩy động theo dạng thập phân hoặc dạng số mũ.

Trong khi biểu diễn bằng cách sử dụng dạng thập phân, bạn phải bao gồm dấu thập phân, số mũ hoặc cả hai và trong khi biểu diễn bằng dạng số mũ, bạn phải bao gồm phần nguyên, phần phân số hoặc cả hai. Số mũ đã ký được giới thiệu bởi e hoặc E.

Dưới đây là một số ví dụ về các dấu phẩy động –

3.14159       // Legal
314159E-5L    // Legal
510E          // Illegal: incomplete exponent
210f          // Illegal: no decimal or exponent
.e55          // Illegal: missing integer or fraction

Boolean Literals

Có hai chữ Boolean và chúng là một phần của từ khóa C ++ chuẩn –

  • Giá trị của true thể hiện đúng.
  • Giá trị sai biểu thị sai.

Bạn không nên xem xét giá trị của true bằng 1 và giá trị của false bằng 0.

Chữ ký tự

Ký tự chữ cái được kèm theo trong dấu nháy đơn. Nếu chữ bắt đầu bằng chữ L (chỉ chữ hoa), thì chữ này có ký tự rộng (ví dụ: L’x ‘) và phải được lưu trong loại biến wchar_t . Nếu không, nó là ký tự hẹp (ví dụ, ‘x’) và có thể được lưu trữ trong một biến đơn giản của kiểu char .

Ký tự chữ có thể là ký tự đơn giản (ví dụ: ‘x’), một chuỗi thoát (ví dụ: ‘\ t’) hoặc ký tự phổ quát (ví dụ: ‘\ u02C0’).

Có một số ký tự trong C ++ khi chúng được bắt đầu bằng dấu gạch chéo ngược chúng sẽ có ý nghĩa đặc biệt và chúng được sử dụng để biểu diễn như dòng mới (\ n) hoặc tab (\ t). Ở đây, bạn có danh sách một số mã chuỗi thoát như vậy –

Trình tự thoát Ý nghĩa
\\ \ tính cách
\ ‘ ‘ tính cách
\ “ ” tính cách
\? ? tính cách
\ a Cảnh báo hoặc chuông
\ b Backspace
\ f Thức ăn dạng
\ n Dòng mới
\ r Vận chuyển trở lại
\ t Tab ngang
\ v Tab dọc
\ ooo Số thập phân từ một đến ba chữ số
\ xhh. . . Số thập lục phân của một hoặc nhiều chữ số

Sau đây là ví dụ để hiển thị một vài ký tự chuỗi thoát –

#include 
using namespace std;

int main() {
   cout << "Hello\tWorld\n\n";
   return 0;
}
Khi mã trên được biên dịch và thực hiện, nó tạo ra kết quả sau:
Hello   World

Chuỗi ký tự

Chuỗi literals được kèm theo trong dấu ngoặc kép. Một chuỗi chứa các ký tự tương tự với các ký tự chữ: các ký tự đơn giản, các chuỗi thoát và các ký tự phổ quát.

Bạn có thể chia một đường dài thành nhiều dòng bằng cách sử dụng các chuỗi ký tự và tách chúng bằng cách sử dụng các khoảng trắng.

Dưới đây là một số ví dụ về chuỗi ký tự. Cả ba hình thức đều giống hệt nhau.

"hello, dear"

"hello, \

dear"

"hello, " "d" "ear"

Xác định hằng số

Có hai cách đơn giản trong C ++ để xác định hằng số –

  • Sử dụng #define preprocessor.
  • Sử dụng từ khóa const .

Trình xử lý trước #define

Sau đây là biểu mẫu để sử dụng bộ xử lý trước #define để xác định hằng số –

#define identifier value
Ví dụ sau giải thích chi tiết –
#include 
using namespace std;

int main() {
   cout << "Hello\tWorld\n\n";
   return 0;
}
Khi mã trên được biên dịch và thực hiện, nó tạo ra kết quả sau:
50

Từ khóa const

Bạn có thể sử dụng tiền tố const để khai báo hằng số với một kiểu cụ thể như sau:

const type variable = value;
Ví dụ sau giải thích chi tiết –
#include 
using namespace std;

int main() {
   const int  LENGTH = 10;
   const int  WIDTH  = 5;
   const char NEWLINE = '\n';
   int area;  
   
   area = LENGTH * WIDTH;
   cout << area;
   cout << NEWLINE;
   return 0;
}
Khi mã trên được biên dịch và thực hiện, nó tạo ra kết quả sau:
50
Lưu ý rằng đó là một thực hành lập trình tốt để xác định hằng số trong CAPITALS.

Các loại biến trong C ++

Một biến cung cấp cho chúng ta lưu trữ có tên là các chương trình của chúng ta có thể thao tác. Mỗi biến trong C ++ có một kiểu cụ thể, xác định kích cỡ và bố cục của bộ nhớ của biến; phạm vi của các giá trị có thể được lưu trữ trong bộ nhớ đó; và tập hợp các hoạt động có thể được áp dụng cho biến.

Tên của một biến có thể bao gồm các chữ cái, chữ số và ký tự gạch dưới. Nó phải bắt đầu bằng chữ cái hoặc dấu gạch dưới. Chữ hoa và chữ thường khác biệt vì C ++ phân biệt chữ hoa chữ thường –

Có các loại biến cơ bản sau trong C ++ như được giải thích trong chương trước

Sr.No Loại & mô tả
1 bool

Lưu trữ giá trị đúng hoặc sai.

2 char

Thông thường một octet đơn (một byte). Đây là một loại số nguyên.

3 int

Kích thước tự nhiên nhất của số nguyên cho máy.

4 float

Giá trị dấu phẩy động chính xác đơn.

5 double

Giá trị dấu phẩy động kép chính xác.

6 void

Đại diện cho sự vắng mặt của loại.

7 wchar_t

Một loại ký tự rộng.

C ++ cũng cho phép xác định các loại biến khác nhau, chúng tôi sẽ đề cập đến trong các chương tiếp theo như Liệt kê, Con trỏ, Mảng, Tham chiếu, Cấu trúc dữ liệu và Lớp học .

Phần sau sẽ bao gồm cách xác định, khai báo và sử dụng các loại biến khác nhau.

Biến định nghĩa trong C ++

Một định nghĩa biến cho trình biên dịch biết đâu và dung lượng lưu trữ để tạo ra biến đó. Một định nghĩa biến xác định một kiểu dữ liệu và chứa một danh sách của một hoặc nhiều biến kiểu đó như sau:

type variable_list;
Ở đây, type phải là kiểu dữ liệu C ++ hợp lệ bao gồm char, w_char, int, float, double, bool hoặc bất kỳ đối tượng do người dùng xác định, v.v. và variable_list có thể bao gồm một hoặc nhiều tên định danh được phân tách bằng dấu phẩy. Một số khai báo hợp lệ được hiển thị ở đây –
int    i, j, k;
char   c, ch;
float  f, salary;
double d;
Dòng int i, j, k; cả hai khai báo và định nghĩa các biến i, j và k; hướng dẫn trình biên dịch tạo các biến có tên là i, j và k của kiểu int.

Các biến có thể được khởi tạo (gán một giá trị ban đầu) trong khai báo của chúng. Trình khởi tạo bao gồm một dấu bằng, theo sau là một biểu thức liên tục như sau:

type variable_name = value;
Một số ví dụ là –
extern int d = 3, f = 5;    // declaration of d and f. 
int d = 3, f = 5;           // definition and initializing d and f. 
byte z = 22;                // definition and initializes z. 
char x = 'x';               // the variable x has the value 'x'.
Đối với định nghĩa không có bộ khởi tạo: các biến có thời gian lưu trữ tĩnh được khởi tạo ngầm với NULL (tất cả các byte có giá trị 0); giá trị ban đầu của tất cả các biến khác là không xác định.

Tuyên bố biến trong C ++

Một khai báo biến cung cấp sự đảm bảo cho trình biên dịch rằng có một biến tồn tại với kiểu và tên đã cho để trình biên dịch tiến hành biên dịch thêm mà không cần chi tiết đầy đủ về biến. Một khai báo biến có ý nghĩa của nó tại thời điểm biên dịch chỉ, trình biên dịch cần định nghĩa biến thực sự tại thời điểm liên kết của chương trình.

Một khai báo biến hữu ích khi bạn đang sử dụng nhiều tệp và bạn xác định biến của mình trong một trong các tệp sẽ có sẵn tại thời điểm liên kết của chương trình. Bạn sẽ sử dụng từ khóa bên  extern để khai báo biến ở bất kỳ nơi nào. Mặc dù bạn có thể khai báo một biến nhiều lần trong chương trình C ++ của bạn, nhưng nó có thể được định nghĩa chỉ một lần trong một tệp, một hàm hoặc một khối mã.

Thí dụ

Hãy thử ví dụ sau, nơi một biến đã được khai báo ở trên cùng, nhưng nó đã được định nghĩa bên trong hàm main –

#include <iostream>
using namespace std;

// Variable declaration:
extern int a, b;
extern int c;
extern float f;
  
int main () {
   // Variable definition:
   int a, b;
   int c;
   float f;
 
   // actual initialization
   a = 10;
   b = 20;
   c = a + b;
 
   cout << c << endl ;

   f = 70.0/3.0;
   cout << f << endl ;
 
   return 0;
}
Khi mã trên được biên dịch và thực hiện, nó tạo ra kết quả sau:
30
23.3333
Cùng một khái niệm được áp dụng trên khai báo hàm, trong đó bạn cung cấp tên hàm tại thời điểm khai báo và định nghĩa thực tế của nó có thể được đưa ra ở bất kỳ nơi nào khác. Ví dụ –
// function declaration
int func();
int main() {
   // function call
   int i = func();
}

// function definition
int func() {
   return 0;
}

Lvalues ​​và Rvalues

Có hai loại biểu thức trong C ++ –

  • lvalue – Các biểu thức tham chiếu đến một vị trí bộ nhớ được gọi là biểu thức “lvalue”. Một giá trị có thể xuất hiện ở bên trái hoặc bên tay phải của một nhiệm vụ.
  • rvalue – Giá trị rvalue đề cập đến một giá trị dữ liệu được lưu trữ tại một số địa chỉ trong bộ nhớ. Một rvalue là một biểu thức mà không thể có một giá trị được gán cho nó có nghĩa là một rvalue có thể xuất hiện ở bên phải nhưng không phải bên trái của một nhiệm vụ.

Các biến là các giá trị và do đó có thể xuất hiện ở phía bên trái của một nhiệm vụ. Chữ số là giá trị và do đó có thể không được gán và không thể xuất hiện ở phía bên tay trái. Sau đây là một tuyên bố hợp lệ –

int g = 20;
Nhưng sau đây không phải là một tuyên bố hợp lệ và sẽ tạo ra lỗi thời gian biên dịch –
10 = 20;