¿La mejor manera de imprimir el resultado de un bool como ‘falso’ o ‘verdadero’ en c?

Tengo que escribir un progtwig en el que las principales funciones de otras funciones que prueban una serie de números si alguna es menor que una, si todas las series están entre dos límites y si alguna es negativa. Mi código devuelve los valores de 1 para verdadero y 0 para falso, pero la asignación solicita que se impriman como ‘verdadero’ o ‘falso’. No estoy seguro de cómo hacer que las respuestas bool se impriman como una cadena de printf. Utilicé if (atl == false) printf (“false”); en mi at_least.c y en main.c, pero solo devuelve una cadena larga de verdadero o falso (por ejemplo, truetruetrue ….). No estoy seguro si esa es la encoding correcta y la estoy colocando en el lugar equivocado o si hubo algún otro código que necesito usar.

Este es mi main.c:

#include "my.h" int main (void) { int x; int count = 0; int sum = 0; double average = 0.0; int largest = INT_MIN; int smallest = INT_MAX; bool atlst = false; bool bet = true; bool neg = false; int end; while ((end = scanf("%d",&x)) != EOF) { sumll(x, &sum); //calling function sumll count++; larger_smaller(x, &largest, &smallest); //calling function larger_smaller if (atlst == false) at_least(x, &atlst); //calling function at_least if x < 50 if (bet == true) between(x, &bet); //calling function between if x is between 30 and 40 (inclusive) if (neg == false) negative(x, &neg); //calling function negative if x < 0 } average = (double) sum / count; print(count, sum, average, largest, smallest, atlst, bet, neg); return; } 

Mis resultados para un conjunto de números:

 The number of integers is: 15 The sum is : 3844 The average is : 256.27 The largest is : 987 The smallest is : -28 At least one is < 50 : 1 //This needs to be true All between 30 and 40 : 0 //This needs to be false At least one is negative : 1 //This needs to be true 

Esto está en C, que parece que no puedo encontrar mucho en.

¡Gracias de antemano por tu ayuda!

APÉNDICE:

Esto se repite a partir de una respuesta a continuación.

Esto funcionó para las funciones at_least y negative, pero no para la función between. yo tengo

 void between(int x, bool* bet) { if (x >= LOWER && x <= UPPER) *bet = false; return; } 

como mi codigo No estoy seguro de lo que está mal.

Podría usar el operador condicional (o ternario) de C:

  (a > b) ? "True" : "False"; 

o tal vez en tu caso:

  x ? "True" : "False" ; 

Versión sin sucursales alternativa:

 "false\0true"+6*x 

x ? "true" : "false"

La expresión anterior devuelve un char * , por lo que puede usar así:

puts(x ? "true" : "false"); o printf(" ... %s ... ", x ? "true" : "false");

Es posible que desee hacer una macro para esto.

Entonces, ¿qué pasa con este:

 #include  #define BOOL_FMT(bool_expr) "%s=%s\n", #bool_expr, (bool_expr) ? "true" : "false" int main(int iArgC, char ** ppszArgV) { int x = 0; printf(BOOL_FMT(x)); int y = 1; printf(BOOL_FMT(y)); return 0; } 

Esto imprime lo siguiente:

 x=false y=true 

Usando esto con el tipo bool pero int debería funcionar de la misma manera.