Ngôn ngữ lập trình C/Biến số
Đặt tên
[edit]Đặt tên (Identifier) là tên đặc cho một Biến số, một Hằng số hay một Hàm. Tên có thể được đặt bằng những chữ cái từ A đến Z, các số từ 0 đến 9 , dấu gạch dưới _ và không trùng với tên Từ khoá
Dưới đây là một số những từ khóa trong C++. Những từ này không thể được dùng làm định danh cho bất kỳ biến, hằng hay hàm nào.
asm else new this auto enum operator throw bool explicit private true break export protected try case extern public typedef catch false register typeid char float reinterpret_cast typename class for return union const friend short unsigned const_cast goto signed using continue if sizeof virtual default inline static void delete int static_cast volatile do long struct wchar_t double mutable switch while dynamic_cast namespace template
C++ là ngôn ngữ lập trình phân biệt kiểu chữ, nên sẽ có sự khác nhau giữa 2 định danh Wikibooks và wikibooks, ví dụ. C++ không cho phép các kí tự @, $ hay % bên trong định danh.
Để chương trình dễ hiểu, lập trình viên nên tuân thủ một số các quy ước đặt tên sau:
- Tên phải gợi nhớ và có liên quan về mặt ngữ nghĩa với đối tượng được đặt tên. Ví dụ, muốn sử dụng một biến số để lưu diện tích thì có thể đặt là Dien_tich, DT hoặc S (ký hiệu thường dùng cho diện tích).
- Tên đối tượng có thể được đặt theo quy ước riêng của một số tổ chức, cá nhân nào đó.
Dấu chấm phẩy và khoảng trắng
[edit]Dấu chấm phẩy ; dùng để kết thúc một câu lệnh. Như Pascal và C, C++ không quan tâm bạn đặt bao nhiêu câu lệnh trên cùng 1 dòng. Ví dụ:
x = y;
y = y+1;
là tương đương với
x = y; y = y+1;
Một dòng chỉ chứa khoảng trắng được xem là một dòng chú thích, và chương trình hoàn toàn bỏ qua nó. Khoảng trắng sẽ giúp cho chương trình của bạn dễ đọc và trông đẹp mắt hơn. Ví dụ dưới đây, đoạn code này vẫn sẽ in ra màn hình với dòng chữ "Wikibooks - Tủ sách mở cho một thế giới mở".
#include <iostream>
using namespace std;
int main()
{
cout << "Wikibooks - Tủ sách mở cho một thế giới mở"; // In dòng chữ Wikibooks - Tủ sách mở cho một thế giới mở ra màn hình
return 0;
}
Kiểu biến số
[edit]Có 4 kiểu cơ bản của các biến trong C; đó là: char
, int
, double
và float
.
Tên kiểu Ý nghĩa char
Đơn vị cơ bản nhất có thể địa chỉ hóa được; nó là một byte. Đây là một kiểu nguyên. int
Loại số nguyên theo kích cỡ tự nhiên nhất của các máy tính. Thông thường nó có thể lấy trọn một khoảng có thể địa chỉ hoá được của một word
với độ lớn biến thiên từ 16, 32, hay 64 bit tùy theo kiến trúc của CPU và hệ điều hành.float
Một giá trị dấu chấm động có độ chính xác đơn. double
Một giá trị dấu chấm động có độ chính xác kép.
Để khai báo một biến có kiểu cơ bản, tên của kiểu được ghi ra trước sau đó đến tên của biến mới (hay của nhiều biến mới cách phân cách nhau bởi dấu phẩy) -- (Xem thêm định nghĩa dãy điểm)
char red;
int blue, yellow;
Các định tính khác nhau có thể đặt vào trong các kiểu cơ bản này để điều chỉnh kích cỡ và sẽ được miêu tả trong phần sau.
Dấu
[edit]Một kiểu được gọi là có dấu nếu kiểu nguyên đó có thể chứa các số âm. Ngược lại các kiểu cơ bản nào không chấp nhận các số âm là kiểu không dấu.
Có hai kiểu nguyên là char
và int
có thể có dấu âm hoặc không. Theo mặc định thì mọi kiểu int
là có dấu (nghĩa là chúng chấp nhận các số âm). Để dùng dưới dạng không có dấu (tức là kiểu nguyên chỉ chấp nhận các sô không âm) thì từ khoá unsigned
phải được dùng. Ngoài ra, thay vì khai báo đầy đủ trong dạng unsigned int
, người ta có thể lược bỏ bớt từ khóa int
(và nó được xem như hiểu ngầm—điều này chỉ dùng được cho kiểu int
mà thôi). Như vậy hai khai báo sau đây hoàn toàn tương đương:
unsigned int green;
unsigned green;
Đặc tả của C không xác định rõ ràng là kiểu char
sẽ là loại có dấu hay không dấu; khi đó, dấu của kiểu này tùy thuộc vào quy định của nhà phát hành trình dịch. Như vậy, một cách để giảm sai sót khi làm việc trên nhiều loại trình dịch C khác nhau là khai báo rõ ràng bằng các định tính signed
hay unsigned
nếu dùng kiểu char
để tính toán trên các con số. (Dù sao, nó thực sự sẽ không quá quan trọng nếu dùng kiểu char
như là kiểu "ký tự".)
unsigned char grey;
signed char white;
Tiêu chuẩn chung yêu cầu char
, signed char
, unsigned char
là các kiểu khác nhau. Ngoài ra, các hàm chuẩn về dãy các ký tự sử dụng các con trỏ chỉ tới kiểu char
(không có định tính), nhiều trình dịch C sẽ bắt lỗi (hay cảnh cáo) nếu các kiểu ký tự khác được dùng như là dãy ký tự được chuyển vào các hàm này.
Kích cỡ
[edit]- Trong phần này hai cụm từ "chiếm" và "có độ dài" đều có nghĩa là "phần bộ nhớ cần thiết để dành cho một biến"; biến này có kiểu được miêu tả tùy theo chi tiết của bài viết.
Kiểu int
cũng có các định tính về kích cỡ để đặc biệt hóa tầm rộng của giá trị mà kiểu này cho phép (tương ứng với đó là việc thay đổi phần bộ nhớ dùng để chứa các số có kiểu này).
short int yellow;
long int orange;
Tương tự như đã đề cập trong phần trước, người ta có thể bỏ không viết từ khóa int
trong các kiểu mà đầy đủ phải viết là short int
or long int
. Thí dụ của hai khai báo sau đây là tương đương.
long int brown;
long brown;
Có một số nhầm lẫn trong giới hiểu biết về C như là các kiểu nguyên có độ lớn bao nhiêu. Trong tiêu chuẩn thì không chỉ một cách rõ ràng việc này:
- Kiểu
short int
không thể lớn hơn kiểuint
. - Kiểu
int
không thể lớn hơnlong int
. - Kiểu
short int
phải dài ít nhất 16 bit. - Kiểu
long int
phải dài ít nhất 32 bit.
Trong tiêu chuẩn đã không đòi hỏi gì về các kích cỡ nêu trên và những khác nhau cần thiết. (Nghĩa là hoàn toàn hợp lệ nếu cả ba kiểu đều dài 64 bit!) Để có được một miêu tả chính xác và đơn giản của các kiểu, mỗi loại máy tính người ta áp dụng vào trong mỗi kiểu (cũng như là kích cỡ của một kiểu con trỏ; xem phần đưới đây) một loại lược đồ đã được tạo ra; (xem:64-Bit Programming Models). Hai lược đồ được biết nhiều nhất là
ILP32
, trong đóint
,long int
và các kiểu con trỏ chiếm 32 bit.LP64
, trong đó,long int
và con trỏ mỗi loại chiếm 64 bit, cònint
có độ dài 32 bit.
Hầu hết các trình dịch dùng các lược đồ trên dùng 16 bit cho kiểu short int
.
Một biến double
có thể là một long double
, mà trình dịch có thể sử dụng thay cho một kiểu double
thuần túy. Tương tự tình huống trước, chuẩn C không hề nêu rõ các kích cỡ tương đối giữa các giá trị dấu chấm động, mà chỉ đòi hỏi float
không được lớn hơn long double
về kích cỡ.