01/10/2018, 10:10

Tên trong C là sao?

Tên được dùng để xác định các đại
lượng khác nhau trong chương trình
như tên hằng, tên biến, tên hàm, …

Quy tắc: Tên phải là một dãy các ký tự
bắt đầu bằng chữ cái hoặc ký tự gạch
dưới, theo sau là chữ cái, chữ số hoặc
ký tự gạch dưới.
Ví dụ:

Tên đúng:

_abc, delta_1

Tên sai:

1xyz (vì bắt đầu bằng chữ số)

A#B (vì có dấu #)

al pha (vì có khoảng trắng)
Em có đọc một tài liệu về C và đoạn trên là đoạn mà em không hiểu? Tên trong hàm, biến, hằng không được đặt bắt đầu bằng chữ số? Nhưng khi vào Visual Studio thì em vẫn viết được
printf(“1caunoi”); . Chẳng phải 1caunoi là 1 biến hay sao mà khi em đặt 1caunoi thì nó vẫn debug được vào không báo lỗi? Có bác nào đưa em ví dụ sai và đúng trong 1 hàm, biến và hằng được kh ạ? Em xin cảm ơn các bác!

rogp10 viết 12:13 ngày 01/10/2018

“1caunoi” là string literal nên không phải.

Quốc Tòan viết 12:20 ngày 01/10/2018

Bác có thể đưa em một vài ví dụ đúng và sai được kh ạ? Em xin cảm ơn trước

rogp10 viết 12:23 ngày 01/10/2018

Thực ra có thêm quy tắc nữa là những tên bắt đầu bằng _ (VS) hay __ đều có thể bị reserved cho compiler.

Còn “1caunoi” không phải là tên, vả lại nếu giải thích thì nó nằm giữa hai dấu ngoặc kép nên chẳng sao cả.

Quốc Tòan viết 12:14 ngày 01/10/2018

_ (VS)

Sorry bác Em vẫn chưa hiểu lắm :(((

Bò Lúc Lắc viết 12:18 ngày 01/10/2018

Quy tắc đặt tên biến, tên hàm, tên hằng v.v

  1. Chỉ được đặt tên bằng chữ cái a->z, A->Z số 0->9 và đấu “_”
  2. Tên biến, tên hàm v.v chỉ được bắt đầu bằng chữ cái a->z, A->Z và dấu “_”
  3. Tên biến, tên hàm v.v có phân biệt chữ hoa chữ thường
    Đây là những cái quy tắc khi đặt tên.
    Nếu đặt tên sai sẽ lỗi ngay từ lúc biên dịch chương trình

printf(“1caunoi”); hàm này xuất ra chuỗi “1cauhoi” ra màn hình. “1cauhoi” là text bình thường, không phải tên biến, tên hàm, tên hằng v.v

Quốc Tòan viết 12:27 ngày 01/10/2018

chẳng hạn giờ em đặt int 1caunoi; thì kh được đúng kh ạ? vì nó là 1 biến?

Nguyen Kien viết 12:12 ngày 01/10/2018

Cách tốt nhất vẫn là thực hành: Mở IDE lên gõ độ 10 cái định danh biên dịch, nếu sai đọc lỗi tự sửa sẽ nhớ

HK boy viết 12:14 ngày 01/10/2018

Không được. Biến phải bắt đầu bằng kí tự chữ, hoặc kí tự _. Có thể 1 số ide không cho phép dùng _ ở đầu biến.

Bò Lúc Lắc viết 12:14 ngày 01/10/2018

Xin đính chính 1 ý nhỏ việc cho phép dấu “_” hay không không phải do ide quyết định mà là compiler quyết định.
IDE chỉ giúp cho biên tập mã nguồn thôi

Trần Hoàn viết 12:24 ngày 01/10/2018

Đôi khi IDE quyết định cho phép đặt tên biến.
Ví dụ trong VS, bác có thể thoải mái đặt tên biến, tên hàm, tên namespace… bằng tiếng Việt, nhưng nhiều IDE khác thì không.

Bò Lúc Lắc viết 12:24 ngày 01/10/2018

Không hẳn như vây. vì VS cái IDE có nó tương thích với compiler luôn nên IDE bắt lỗi sẳn và hiện luôn cho dev dễ sửa. Vì nó biết là nếu cho compiler chạy cũng lỗi y như vậy.
Về cơ bàn có thể compile mà chỉ cần dùng command line như sau:

  1. VD: tạo 1 file hello.cpp bằng notepad và lưu ở đường dẫn C:\Users\ …\Desktop như sau:

    #include <stdio.h>
    #include <conio.h>

    int main()
    {
    printf("%s\n", “Hello word”);
    getch();
    return 1;
    }

  2. Mở tool Developer Command Prompt for VS 2017

  3. dùng lệnh cd di chuyển đến thư muc C:\Users\ …\Desktop

  4. dùng lệnh cl C:\Users\ …\Desktop\hello.cpp

*Như vây la đã có thể compile 1 app c++ không cần mở VS làm gi cả

Trần Hoàn viết 12:10 ngày 01/10/2018

Vậy cho mình hỏi
trong một số IDE online mình thử thì không cho đặt tên biến kiểu int Biến1 mà chỉ có thể là int Bien1, còn VS thì cho phép, như vậy cái đó là do compiler hay do text editor vậy?

rogp10 viết 12:13 ngày 01/10/2018

Mà đặt kiểu đó chắc cũng ko được xài vì commit lên xong người ta pull về biên dịch ko được thì auto gạch

Bò Lúc Lắc viết 12:11 ngày 01/10/2018

Để mình giải thích tại sao VS lai có thể cho phép đặt tên biến bằng tiếng việt có dấu:
vấn đề nằm ở Encoding của file (*.cpp)

  1. nếu file đó được save dưới EncodingUTF-8- BOM thì VS có để biên dịch với tên biến bằng tiếng việt có dấu ngược lai thì VS sẽ báo lỗi. Ban có để kiểm tra Encoding của file bằng tool nodepad++ ở menu có mục Encoding. Ban cũng có thể thử bằng cách save file đó bằng Encoding khác xem biên dịch dược không.
  2. những compiler trên mạng thì mình không thể biết được nó dùng compiler gì và file đem di compile có Encoding là gì? nên việc lỗi là có thể xãy ra
  3. Việc đăt tên biến băng tiếng việt có dấu là hoàn toàn sai theo tiêu chuẩn của C/C++ nhé. compiler cho phép biên dịch ko có nghĩa là nó đúng đâu
Trần Hoàn viết 12:11 ngày 01/10/2018

À, việc save file dưới encode không chứa Unicode thì ký tự đó sẽ tự bị chuyển thành ‘?’ hoặc mấy cái như trái tim, mặt cười… trong bảng ASCII cho nên khi biên dịch sẽ gây lỗi. Còn Intellisense thì không báo lỗi với ký tự Unicode. Mình biết nó không chuẩn, mình chỉ thắc mắc là việc không chấp nhận ký tự Unicode trong tên biến là do compiler hay do text editor thôi.
Khi code thì mình cũng không đặt tên như vậy bao giờ, chỉ là mình có lần đặt thử và bất ngờ với việc nó chạy được. Tiện có topic này hỏi luôn í mà.

Bài liên quan
0