不带条件的If语句



我想问一下C语言在以下方面的行为:

int n = 0;
.
.
// n in this block may change value to something else but a (positive) number
.
.
if(n)
{
  // do something
}
.
.

那么当n是整数时,if(n)意味着什么?

根据C11标准文档第6.8.4章,选择语句

if ( expression ) statement

选择语句根据控制表达式的值在一组语句中进行选择。

和6.8.4.1章中的 if语句

在这两种形式中,如果表达式的比较结果不等于0,则执行第一个子语句。

这里,if(n)

  • 如果if(n)结果为TRUE (n不等于0,包括+ve-ve的值),执行下一条语句(块)
  • 如果if(n)结果为FALSE (n等于0),跳过下一条语句(块)

在C语言中,布尔类型用整数表示,因此每个正数都被认为是布尔值true,只有整数0被认为是布尔值false。

在C语言中,所有值为0的整数类型的值都为false,否则为true。请注意,偶数的计算结果为真。

在您的例子中,如果n仍然为0,则if语句体将不会执行,因为表达式的计算结果为false。如果n被设置为0以外的值,If语句体将执行。

你似乎误解了condition的意思。条件不一定包含比较器,如==<等。条件可以是任何表达式。现在,如果if表达式的计算结果为零,则认为它为假,并且不计算if语句。否则,则认为它为真,并计算if语句。

很难理解你在这里想问什么,但我将抛出我的2美分,你决定它是否有助于你理解if语句的工作方式。

int uiStupidFunction(int num)
{
    return num++;
}
int uiAnotherStupidFunction(int num)
{
    return 0;
}
int main(void)
{
    int n = 0;
    // n in this block may change value to something else but a (positive) number
    //suppose in this way
    n = uiStupidFunction(10);
    if(n)
    {
        printf("n = %d", n);  //prints 10
        //do something
    }
    n = uiAnotherStupidFunction(10);
    if(n)
    {
        printf("n = %d", n);  //prints?
        //do something
    }
    else
    {
        printf("nHumpty Dumpty sat on a wall");  //
    }
}

只是想添加if(i)将与if(!!i)相同,检查它是否非零。而if (!i)是检查是否为零。因为true为1,false为0,所以!!(true)返回true, !!(false)返回false。因此,当整数存储错误代码并希望将其结果规范化为布尔值时,它有时是有用的,并且它非常短,但我建议将其写出来,以便清晰。(即;If (i != 0)而不是If (i))

希望能有所帮助。

    int i1 = -50, i2 = 0, i3 = 50;
    if (i1) 
        printf("if(-50) passedn");
    if (i2) 
        printf("if(0) passedn");
    if (i3) 
        printf("if(50) passedn");
    if (!!i1)
        printf("if(!!-50) passedn");
    if (!!i2)
        printf("if(!!0) passedn");
    if (!!i3)
        printf("if(!!50) passedn");
    if (!!true)
        printf("if(!!true) passedn");
    if (!!false)
        printf("if(!!false) passedn");

然后我们得到以下内容:

OUTPUT:
if(-50) passed
if(50) passed
if(!!-50) passed
if(!!50) passed
if(!!true) passed

相关内容

  • 没有找到相关文章

最新更新