C语言 如何使用bool数据类型?

a6b3iqyw  于 2022-12-03  发布在  其他
关注(0)|答案(3)|浏览(193)

我在我的代码中有返回真或假的布尔值的规范,但是我不知道如何打印依赖于它是真还是假。我有一些由用户和布尔值提示的浮点数来确定它是真还是假。我如何使用这两个数据来打印依赖于它呢?

bool valid_triangle(float x, float y, float z);
int main(void)
{
    float x;
    float y;
    float z;
    do
    {
        x = get_float("Enter a length: ");
    }
    while(x <= 0);
    do
    {
        y = get_float("Enter other length: ");
    }
    while(y <= 0);
    do
    {
        z = get_float("The last one: ");
    }
    while(z <= 0);
}
if(valid_triangle = 1)
{
    printf("It's a triangle");
}
bool valid_triangle(float x, float y, float z)
{
    if(x <= 0 || y <= 0 || z <= 0)
    {
        return false;
    }
    if((x + y <= z) || (x + z <= y) || (y + z <= x))
    {
        return false;
    }
    return true;
}

我尝试了一个带bool的if条件,但没有编译。

xoefb8l8

xoefb8l81#

这一点:

if(valid_triangle = 1)

尝试将valid_triangle函数重新赋值给整数1。这不会编译;函数名的行为类似于常量,不能赋值。
您需要以下内容:

if (valid_triangle(x, y, z))
{
  printf("yay, got a valid triangle with sides %f, %f and %f!\n", x, y, z);
}

上面的代码 * 调用 * valid_triangle()函数,将从用户那里收集的三个值传递给它。如果返回值为非零(true为非零),if将执行它的主体,否则将跳过它。
请注意,我(强烈)建议不要对布尔值进行显式比较,因为比较运算符本身只会产生一个布尔值,这让我感到痛苦的递归。

fnvucqvd

fnvucqvd2#

valid_triangle函数需要3个参数x,y,z。您必须将从用户处获取的值传递给该函数。

if(valid_triangle(x, y, z) == true)
{
    printf("It's a triangle");
} else {
    printf("It's not a triangle");

}
8nuwlpux

8nuwlpux3#

由于其他问题已经展示了纠正代码中错误的方法,我将尝试回答您的主要问题:

printf("%s a triangle\n", 
            valid_triangle(x, y, z) 
                ? "It's" 
                : "It is not");

可以是一种简洁而有效的方式,以用户友好的方式打印布尔结果。

puts(valid_triangle(x, y, z)
            ? "It's a triangle"
            : "It is not a triangle");

因为它避免了需要printf(3)来替换上述正确字符串的参数替换。

相关问题