type true tipo sirve que para false dato booleano bool c printf boolean

true - ¿La mejor manera de imprimir el resultado de un bool como ''falso'' o ''verdadero'' en c?



tipo bool c++ (4)

Entonces, ¿qué pasa con este:

#include <stdio.h> #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.

Tengo que escribir un programa en el cual las llamadas principales a 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 codificación correcta y la estoy colocando en el lugar equivocado o si hay 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) { sumall(x, &sum); //calling function sumall 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 quizás 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.