Kapan saya harus menggunakan tanda kutip tunggal dan tanda kutip ganda dalam pemrograman C atau C ++?
Di C dan di C ++ tanda kutip tunggal mengidentifikasi karakter tunggal, sedangkan tanda kutip ganda membuat string literal. 'a'
adalah sebuah karakter literal tunggal, sedangkan "a"
string literal berisi sebuah 'a'
dan terminator nol (yaitu array 2 char).
Dalam C ++ tipe karakter literal adalah char
, tetapi perhatikan bahwa dalam C, tipe karakter literal adalah int
, yaitu sizeof 'a'
4 dalam arsitektur di mana ints adalah 32bit (dan CHAR_BIT adalah 8), sedangkan sizeof(char)
1 di mana-mana.
Beberapa kompiler juga mengimplementasikan ekstensi, yang memungkinkan konstanta multi-karakter. Standar C99 mengatakan:
6.4.4.4p10: "Nilai konstanta karakter integer yang mengandung lebih dari satu karakter (misalnya, 'ab'), atau mengandung karakter atau urutan pelarian yang tidak memetakan ke karakter eksekusi byte tunggal, ditentukan oleh implementasi. "
Ini bisa terlihat seperti ini, misalnya:
const uint32_t png_ihdr = 'IHDR';
Konstanta yang dihasilkan (dalam GCC, yang mengimplementasikan ini) memiliki nilai yang Anda dapatkan dengan mengambil setiap karakter dan menggesernya, sehingga 'I' berakhir di bit paling signifikan dari nilai 32-bit. Jelas, Anda tidak harus bergantung pada ini jika Anda menulis kode independen platform.
Kutipan tunggal adalah karakter (
char
), kutipan ganda adalah string yang diakhiri dengan null (char *
).sumber
const char *
.'x'
adalah bilangan bulat, mewakili nilai numerik huruf x dalam rangkaian karakter mesin"x"
adalah array karakter, panjang dua karakter, terdiri dari‘x’
diikuti oleh‘\0’
sumber
Kutipan tunggal adalah untuk satu karakter. Kutipan ganda untuk string (array karakter). Anda dapat menggunakan tanda kutip tunggal untuk membangun karakter string satu per satu, jika Anda mau.
sumber
Saya mencari-cari hal-hal seperti: int cc = 'cc'; Itu terjadi pada dasarnya salinan byte-bijaksana untuk integer. Maka cara untuk melihatnya adalah bahwa 'cc' yang pada dasarnya adalah 2 c disalin ke 2 byte lebih rendah dari integer cc. Jika Anda mencari hal-hal sepele, maka
99 25443
itu karena 25443 = 99 + 256 * 99
Jadi 'cc' adalah konstanta multi-karakter dan bukan string.
Bersulang
sumber
single quote
adalah untukcharacter
;double quote
adalah untukstring
.sumber
Kutipan ganda untuk string literal, misalnya:
Kutipan tunggal untuk literal karakter tunggal, misalnya:
Sunting Seperti yang dinyatakan David dalam jawaban lain, tipe karakter literal adalah
int
.sumber
char str[] = {'H','e','l','l','o'};
, dan tidakstr
akan memiliki terminator nol.str
bukan string (setidaknya, bukan string gaya-C, yang didefinisikan sebagai NTBS).char[]
(yang orang sering anggap sebagai "string") diakhiri dengan null."hello" /*seamlessly connected to*/ "world"
. Dan ini masuk akal untuk pesan multi-line yang dikomentari.Dalam C tanda kutip tunggal seperti 'a' menunjukkan konstanta karakter sedangkan "a" adalah array karakter, selalu diakhiri dengan 0 karakter
sumber
Kutipan tunggal digunakan untuk karakter, sedangkan kutipan ganda digunakan untuk string.
Sebagai contoh..
Keluaran
Hello World
Jika Anda menggunakan ini dalam kasus sebaliknya dan menggunakan kutipan tunggal untuk string dan kutipan ganda untuk karakter. Di sini, ini akan menjadi hasil;
keluaran:
untuk baris pertama. Anda akan memiliki nilai sampah atau tidak terduga. Atau Anda mungkin memiliki output seperti ini ..
sedangkan untuk pernyataan kedua. Anda tidak akan melihat apa pun. Satu hal lagi. Jika Anda memiliki lebih banyak pernyataan setelah ini. Mereka juga tidak akan memberi Anda hasil.
Catatan: Bahasa PHP memberi Anda fleksibilitas untuk menggunakan penawaran tunggal dan ganda dengan mudah.
sumber
Kutipan tunggal menunjukkan char, double menunjukkan string.
Di Jawa juga sama.
sumber
Gunakan kutipan tunggal dengan char tunggal sebagai:
di sini
'a'
adalah konstanta char dan sama denganASCII
nilai char a.Gunakan penawaran ganda dengan string sebagai:
di sini
"foo"
adalah string literal.Tidak apa-apa untuk digunakan
"a"
tetapi tidak apa-apa untuk digunakan 'foo'
sumber