เมื่อใดที่ฉันควรใช้เครื่องหมายคำพูดเดี่ยวและเครื่องหมายคำพูดคู่ในการเขียนโปรแกรม C หรือ C ++
เมื่อใดที่ฉันควรใช้เครื่องหมายคำพูดเดี่ยวและเครื่องหมายคำพูดคู่ในการเขียนโปรแกรม C หรือ C ++
คำตอบ:
ใน C และในเครื่องหมายอัญประกาศเดี่ยว C ++ ระบุอักขระเดียวในขณะที่อัญประกาศคู่สร้างตัวอักษรสตริง 'a'
เป็นตัวอักษรตัวเดียวในขณะที่"a"
เป็นตัวอักษรสตริงที่มี'a'
และตัวสิ้นสุดโมฆะ (นั่นคือ 2 อาร์เรย์ถ่าน)
ใน C ++ ประเภทของตัวอักษรตัวอักษรคือchar
แต่โปรดทราบว่าใน C ประเภทของตัวอักษรตัวอักษรคือint
ว่าsizeof 'a'
เป็น 4 ในสถาปัตยกรรมที่ ints เป็น 32 บิต (และ CHAR_BIT เป็น 8) ในขณะที่sizeof(char)
1 ทุกที่
คอมไพเลอร์บางตัวยังใช้ส่วนขยายที่อนุญาตค่าคงที่แบบหลายอักขระ มาตรฐาน C99 พูดว่า:
6.4.4.4p10: "ค่าของค่าคงที่จำนวนเต็มประกอบด้วยอักขระมากกว่าหนึ่งตัว (เช่น 'ab') หรือมีลำดับอักขระหรือลำดับการหลีกเลี่ยงที่ไม่ได้จับคู่กับอักขระการดำเนินการไบต์เดียวจะถูกกำหนดใช้งาน "
สิ่งนี้อาจมีลักษณะเช่นนี้ตัวอย่างเช่น:
const uint32_t png_ihdr = 'IHDR';
ค่าคงที่ที่เกิดขึ้น (ใน GCC ซึ่งใช้งานนี้) มีค่าที่คุณได้รับจากการใช้อักขระแต่ละตัวและเลื่อนขึ้นเพื่อให้ 'ฉัน' สิ้นสุดลงในบิตที่สำคัญที่สุดของค่า 32 บิต เห็นได้ชัดว่าคุณไม่ควรเชื่อถือสิ่งนี้หากคุณกำลังเขียนโค้ดอิสระของแพลตฟอร์ม
เครื่องหมายคำพูดเดี่ยวคืออักขระ ( char
) เครื่องหมายคำพูดคู่เป็นสตริงที่สิ้นสุดด้วยค่า null ( char *
)
char c = 'x';
char *s = "Hello World";
const char *
เป็น
'x'
เป็นจำนวนเต็มแทนค่าตัวเลขของตัวอักษร x ในชุดอักขระของเครื่อง"x"
คืออาร์เรย์ของอักขระยาวสองอักขระประกอบด้วย‘x’
ตามด้วย‘\0’
เครื่องหมายคำพูดเดี่ยวใช้สำหรับอักขระเดี่ยว เครื่องหมายคำพูดคู่ใช้สำหรับสตริง (อาเรย์ของอักขระ) คุณสามารถใช้อัญประกาศเดียวเพื่อสร้างสตริงหนึ่งตัวอักษรในแต่ละครั้งหากคุณต้องการ
char myChar = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','\0' };
ฉันแหย่สิ่งต่าง ๆ เช่น: int cc = 'cc'; มันเกิดขึ้นว่าโดยทั่วไปแล้วมันเป็นสำเนาแบบไบต์ไปยังจำนวนเต็ม ดังนั้นวิธีที่จะดูคือ 'ซีซี' ซึ่งโดยทั่วไปแล้ว 2 ซีจะถูกคัดลอกไปที่ 2 ไบต์ล่างของซีซีจำนวนเต็ม หากคุณกำลังมองหาเรื่องไม่สำคัญแล้ว
printf("%d %d", 'c', 'cc'); would give:
99 25443
นั่นเป็นเพราะ 25443 = 99 + 256 * 99
ดังนั้น 'cc' คือค่าคงที่แบบหลายตัวละครไม่ใช่สตริง
ไชโย
single quote
สำหรับcharacter
;double quote
string
สำหรับเครื่องหมายคำพูดคู่ใช้สำหรับตัวอักษรสตริงเช่น:
char str[] = "Hello world";
เครื่องหมายคำพูดเดี่ยวสำหรับตัวอักษรตัวเดียวเช่น:
char c = 'x';
แก้ไขint
ขณะที่เดวิดที่ระบุไว้ในคำตอบอื่นประเภทของตัวอักษรตัวอักษรเป็น
char str[] = {'H','e','l','l','o'};
และstr
จะไม่มีตัวสิ้นสุด null
str
นั้นไม่ใช่สตริง (อย่างน้อยไม่ใช่สตริง C-style ซึ่งถูกกำหนดให้เป็น NTBS)
char[]
(ซึ่งคนมักจะเป็น "สตริง") ถูกยกเลิกด้วยค่า null
"hello" /*seamlessly connected to*/ "world"
สายอักขระตัวอักษรแยกจากกันโดยไม่มีความคิดเห็น: และสิ่งนี้สมเหตุสมผลสำหรับข้อความหลายบรรทัดที่ถูกคอมเม้นต์
ในเครื่องหมายอัญประกาศเดี่ยว C เช่น 'a' แสดงถึงค่าคงที่ของอักขระในขณะที่ "a" เป็นอาร์เรย์ของอักขระสิ้นสุดด้วยอักขระ 0 เสมอ
ใช้เครื่องหมายคำพูดเดี่ยวสำหรับอักขระในขณะที่เครื่องหมายคำพูดคู่ใช้สำหรับสตริง
printf("%c \n",'a');
printf("%s","Hello World");
สวัสดีชาวโลก
หากคุณใช้สิ่งเหล่านี้ในทางกลับกันและใช้เครื่องหมายคำพูดเดี่ยวสำหรับสตริงและเครื่องหมายคำพูดคู่สำหรับอักขระ นี่จะเป็นผลลัพธ์
printf("%c \n","a");
printf("%s",'Hello World');
สำหรับบรรทัดแรกคุณจะมีค่าขยะหรือไม่คาดคิดหรือคุณอาจมีผลลัพธ์เช่นนี้ ..
�
ในขณะที่คำสั่งที่สอง คุณจะไม่เห็นอะไรเลย อีกอย่างหนึ่ง หากคุณมีคำสั่งเพิ่มเติมหลังจากนี้ พวกเขาจะไม่ให้ผลลัพธ์กับคุณ
หมายเหตุ: ภาษา PHP ให้ความยืดหยุ่นในการใช้เครื่องหมายคำพูดเดี่ยวและคู่ได้อย่างง่ายดาย
เครื่องหมายคำพูดเดี่ยวหมายถึงถ่าน, แสดงว่าเป็นสตริง
ในจาวาก็มีเหมือนกัน
ใช้เครื่องหมายคำพูดเดี่ยวกับอักขระเดี่ยวเป็น:
char ch = 'a';
นี่'a'
คือค่าคงที่ถ่านและเท่ากับASCII
มูลค่าของถ่าน a
ใช้เครื่องหมายคำพูดคู่กับสตริงเป็น:
char str[] = "foo";
นี่"foo"
คือตัวอักษรสตริง
มันใช้ได้ดี"a"
แต่ก็ไม่โอเคที่จะใช้ 'foo'