การเขียนโปรแกรม D - ตัวอักษร

ค่าคงที่ที่พิมพ์ลงในโปรแกรมเป็นส่วนหนึ่งของซอร์สโค้ดจะถูกเรียก literals.

ตัวอักษรสามารถเป็นข้อมูลพื้นฐานประเภทใดก็ได้และสามารถแบ่งออกเป็นเลขจำนวนเต็มเลขทศนิยมอักขระสตริงและค่าบูลีน

อีกครั้งตัวอักษรจะได้รับการปฏิบัติเช่นเดียวกับตัวแปรทั่วไปยกเว้นว่าไม่สามารถแก้ไขค่าได้หลังจากนิยามแล้ว

ตัวอักษรจำนวนเต็ม

ลิเทอรัลจำนวนเต็มสามารถเป็นประเภทต่อไปนี้ -

  • Decimal ใช้การรีเฟรชหมายเลขปกติโดยตัวเลขหลักแรกไม่สามารถเป็น 0 ได้เนื่องจากตัวเลขนั้นสงวนไว้สำหรับระบุระบบฐานแปดซึ่งไม่รวม 0 ด้วยตัวมันเอง: 0 คือศูนย์

  • Octal ใช้ 0 เป็นคำนำหน้าตัวเลข

  • Binary ใช้ 0b หรือ 0B เป็นคำนำหน้า

  • Hexadecimal ใช้ 0x หรือ 0X เป็นคำนำหน้า

ลิเทอรัลจำนวนเต็มยังสามารถมีส่วนต่อท้ายที่รวมกันของ U และ L สำหรับไม่ได้ลงนามและยาวตามลำดับ คำต่อท้ายสามารถเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กและสามารถเรียงลำดับอย่างไรก็ได้

เมื่อคุณไม่ใช้คำต่อท้ายคอมไพเลอร์เองจะเลือกระหว่าง int, uint, long และ ulong ตามขนาดของค่า

นี่คือตัวอย่างบางส่วนของตัวอักษรจำนวนเต็ม -

212         // Legal 
215u        // Legal 
0xFeeL      // Legal 
078         // Illegal: 8 is not an octal digit 
032UU       // Illegal: cannot repeat a suffix

ต่อไปนี้เป็นตัวอย่างอื่น ๆ ของตัวอักษรจำนวนเต็มประเภทต่างๆ -

85         // decimal 
0213       // octal
0x4b       // hexadecimal 
30         // int 
30u        // unsigned int 
30l        // long 
30ul       // unsigned long 
0b001      // binary

Floating Point Literals

ลิเทอรัลจุดลอยตัวสามารถระบุได้ในระบบทศนิยมเช่น 1.568 หรือในระบบเลขฐานสิบหกเช่นเดียวกับ 0x91.bc

ในระบบเลขฐานสิบสามารถแสดงเลขชี้กำลังได้โดยการเพิ่มอักขระ e หรือ E และตัวเลขหลังจากนั้น ตัวอย่างเช่น 2.3e4 หมายถึง "2.3 คูณ 10 ยกกำลัง 4" อาจมีการระบุอักขระ“ +” ก่อนค่าของเลขชี้กำลัง แต่ไม่มีผลใด ๆ ตัวอย่างเช่น 2.3e4 และ 2.3e + 4 จะเหมือนกัน

อักขระ“ -” ที่เพิ่มก่อนค่าของเลขชี้กำลังจะเปลี่ยนความหมายเป็น "หารด้วย 10 ยกกำลัง" ตัวอย่างเช่น 2.3e-2 หมายถึง "2.3 หารด้วย 10 ยกกำลัง 2"

ในระบบเลขฐานสิบหกค่าจะเริ่มต้นด้วย 0x หรือ 0X เลขชี้กำลังถูกระบุด้วย p หรือ P แทนที่จะเป็น e หรือ E เลขชี้กำลังไม่ได้หมายถึง "10 ยกกำลัง" แต่เป็น "2 ยกกำลังของ" ตัวอย่างเช่น P4 ใน 0xabc.defP4 หมายถึง "abc.de คูณ 2 ยกกำลัง 4"

นี่คือตัวอย่างบางส่วนของตัวอักษรทศนิยม -

3.14159       // Legal 
314159E-5L    // Legal 
510E          // Illegal: incomplete exponent 
210f          // Illegal: no decimal or exponent 
.e55          // Illegal: missing integer or fraction 
0xabc.defP4   // Legal Hexa decimal with exponent 
0xabc.defe4   // Legal Hexa decimal without exponent.

ตามค่าเริ่มต้นประเภทของลิเทอรัลจุดลอยตัวจะเป็นสองเท่า ค่าเฉลี่ยค่า f และ F และตัวระบุ L หมายถึงจริง

ตัวอักษรบูลีน

มีลิเทอรัลบูลีนสองตัวและเป็นส่วนหนึ่งของคีย์เวิร์ด D มาตรฐาน -

  • ค่าของ true เป็นตัวแทนของความจริง

  • ค่าของ false เป็นตัวแทนของเท็จ

คุณไม่ควรพิจารณาค่าของจริงเท่ากับ 1 และค่าของเท็จเท่ากับ 0

ตัวอักษร

ตามตัวอักษรอยู่ในเครื่องหมายคำพูดเดี่ยว

อักขระลิเทอรัลสามารถเป็นอักขระธรรมดา (เช่น 'x'), ลำดับหลีก (เช่น '\ t'), อักขระ ASCII (เช่น '\ x21'), อักขระ Unicode (เช่น '\ u011e') หรือ เป็นอักขระที่มีชื่อ (เช่น '\ ©', '\ ♥', '\ €')

มีอักขระบางตัวใน D เมื่อนำหน้าด้วยแบ็กสแลชซึ่งจะมีความหมายพิเศษและใช้แทนเช่น newline (\ n) หรือ tab (\ t) ที่นี่คุณมีรายการรหัสลำดับการหลบหนีดังกล่าว -

ลำดับการหลบหนี ความหมาย
\\ \ อักขระ
\ ' 'ตัวละคร
\ " "ตัวละคร
\? เหรอ? ตัวละคร
\ ก แจ้งเตือนหรือกระดิ่ง
\ b Backspace
\ ฉ ฟีดรูปแบบ
\ n ขึ้นบรรทัดใหม่
\ r การกลับรถ
\ t แท็บแนวนอน
\ v แท็บแนวตั้ง

ตัวอย่างต่อไปนี้แสดงอักขระลำดับ Escape เพียงไม่กี่ตัว -

import std.stdio;
  
int main(string[] args) { 
   writefln("Hello\tWorld%c\n",'\x21'); 
   writefln("Have a good day%c",'\x21'); 
   return 0; 
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Hello   World!

Have a good day!

ตัวอักษรสตริง

ตัวอักษรสตริงอยู่ในเครื่องหมายคำพูดคู่ สตริงประกอบด้วยอักขระที่คล้ายกับตัวอักษรอักขระ: อักขระธรรมดาลำดับการหลีกและอักขระสากล

คุณสามารถแบ่งบรรทัดยาวออกเป็นหลายบรรทัดโดยใช้ตัวอักษรสตริงและแยกออกโดยใช้ช่องว่าง

นี่คือตัวอย่างบางส่วนของตัวอักษรสตริง -

import std.stdio;

int main(string[] args) {
   writeln(q"MY_DELIMITER
      Hello World
      Have a good day
      MY_DELIMITER");

   writefln("Have a good day%c",'\x21'); 
   auto str = q{int value = 20; ++value;}; 
   writeln(str); 
}

ในตัวอย่างข้างต้นคุณสามารถใช้ q "MY_DELIMITER MY_DELIMITER" เพื่อแสดงอักขระหลายบรรทัด นอกจากนี้คุณสามารถดู q {} เพื่อแสดงคำสั่งภาษา D ได้