Czy nie ma błędu składni? Jeśli printf („jeden” „, dwa i” „% s. N”, „trzy”); być prawidłowym kodem?

Spójrz na ten kod:

#include <stdio.h>

#define _ONE "one"
#define _TWO_AND ", two and "
int main()
{
    const char THREE[6] = "three" ;
    printf(_ONE _TWO_AND "%s.\n", THREE );
    return 0;
}

Theprintf jest skutecznie:

printf("one" ", two and " "%s.\n", "three" );

a wyjście to:

jeden, dwa i trzy.

gcc nie zawiera błędów ani komunikatów ostrzegawczych po skompilowaniu tego kodu. Jestgcc kompilator powinien działać w ten sposób, czy jest to błąd?

questionAnswers(3)

yourAnswerToTheQuestion