const cadena más booleano para pluralizar en C

Me sorprende que string plus boolean tenga un efecto similar a la operación ternaria:

int apple = 2;                                                                      
printf("apple%s\n", "s" + (apple <= 1));

If apple <= 1, imprimirá manzana. ¿Por qué funciona esto?

preguntado el 01 de julio de 12 a las 01:07

1 Respuestas

Debido a que la condición se evalúa como 0 o 1, y la cadena "s" contiene exactamente un carácter antes del terminador 0. Entonces "s" + bool evaluará a la dirección de "s" if bool es falso, y un carácter detrás de eso, la dirección del terminador 0 si es verdadero.

Es un truco genial, pero nunca uses un código como ese en serio.

Respondido 01 Jul 12, 01:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.