Каква е разликата между "a" и "a" и между "3" и "3" в програмния език на C?


Отговор 1:

Всичко, което е между „”, се счита за низ (масив от знаци), докато всичко в „” се счита за един знак.

Всеки път, когато използвате „“, в края на низа се вписва нулев символ („\ 0“), за да се маркира края на низа. Можете също така да получите достъп до всеки символ в низ, също като елемент в масива чрез неговия индекс.

Ако имате работа с един символ, трябва да използвате единични кавички, ако имате работа с низовете, използвайте „”.

Нещо като char a = „a“; ще хвърли грешка, защото низовете се съхраняват като указатели, докато символ се съхранява в еквивалентния му код на ascii (като цяло число)


Отговор 2:

Двойните кавички определят низове със завършващ нулев символ. Единичните кавички не правят това.

"a" определя 0x61, 0x00
'a' определя 0x61

"3" определя 0x33, 0x00
'3' определя 0x33

Така че можем да определим

char * p = "3";

Но ние не можем да направим

char * p = '3';

Той ще даде грешка като „инициализиране на тип променлива char * с rvalue char“.

Но можем да направим това

char c = '3';