> na, tai būtų elementari sintaksės klaida, nepraeitų pro kompilerį...
Kodėl gi?
Tai visai legali C sintaksė, net tokia keista programa turi kompliuotis:
int main() {
1, 2, 3;
return 0;
}
Tiesa, su -Wall turėtum gauti "warning: left-hand operand of comma
expression has no effect".
Trumpiau tariant, DisplayData[5] = 'F', 'U', 'C', 'K', 'K'; yra validi C
sintaksė, tik daro visai ne tai, ką tu galvoji.
unsigned char DisplayData[5] — čia aprašai masyvą iš penkių elementų;
Realiai tavo elementai gali turėti indeksus nuo 0 iki 4.
DisplayData[5] = 'F', 'U', 'C', 'K', 'K'; — čia bandai priskirti 'F'
šeštam elementui (elementas su indeksu 5), kas yra už tavo masyvo ribų.
visos likusios raidės tiesiog ignoruojamos, todėl nenuostabu, kad
išvedama belekas.
Inicializuok arba DisplayData[5] = {'F', 'U', 'C', 'K', 'K'} arba
DisplayData[6] = "FUCKK"; (6, nes toks deklaravimas automatiškai prideda
\0). Ilgį galima ir praleisti: DisplayData[] = "FUCKK";
Iliustracijai:
#include <stdio.h>
#define MAXCHARS 5
void output_char(char one_char) {
printf("%c\n", one_char);
}
void output_array(const char chars[]){
int index = 0;
//sukam while kol neužsiranam ant \0
while (chars[index]) {
output_char(chars[index++]);
}
}
int main() {
char display_data_one[MAXCHARS] = {'L', 'A', 'B', 'A', 'S'};
//tas pats kaip display_data_two[5] = {'V', 'I', 'S', 'O', '\0'}
char display_data_two[] = "VISO";
int i;
//einam su for per masyvą ir po vieną simbolį
// paduodam į funkciją
for (i = 0; i < MAXCHARS; i++) {
output_char(display_data_one[i]);
}
//paduodam visą masyvą funkcijai
output_array(display_data_two);
return 0;
}