我想问一下C语言在以下方面的行为:
int n = 0;
.
.
// n in this block may change value to something else but a (positive) number
.
.
if(n)
{
// do something
}
.
.
那么当if(n)
是整数时,n
意味着什么?
答案 0 :(得分:2)
根据if ( expression ) statement
标准文件,第6.8.4章,选择陈述,
if
选择语句根据控制表达式的值在一组语句中进行选择。
从第6.8.4.1章开始, if(n)
语句
在两种形式中,如果表达式将une等于0,则执行第一个子语句。
所以,基本上,在这里,if(n)
将
n
结果为TRUE(+ve
不等于0,包括-ve
和if(n)
值),则执行下一条语句(阻止)n
结果为FALSE(var UserSchema = new mongoose.Schema({
name:{type:String,required:true},
photo:Buffer // Image
});
等于0),则跳过下一个语句(块)答案 1 :(得分:1)
在C中,所有具有0值的整数类型,计算为false,否则它们计算为true。请注意,即使负数也会评估为真。
在您的情况下,如果n
保持为0,则if语句的主体将不会执行,因为表达式的计算结果为false。如果将n
设置为0以外的其他值,则将执行if语句主体。
答案 2 :(得分:1)
在C语言中,布尔类型用整数表示,因此每个正数被认为是布尔值true,只有整数0被认为是布尔值假。
答案 3 :(得分:0)
您似乎误解了条件的含义。条件不一定包含比较符,例如==
或<
等。条件可以是任何表达式。现在,如果if表达式求值为零,则将其视为false,并且不评估if语句。否则,它被认为是真的并且评估了if语句。
答案 4 :(得分:0)
它很难理解你想在这里问什么,但我会把我的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"); //
}
}
答案 5 :(得分:0)
只需添加if(i)与if(!! i)相同,然后检查它是否为非零。 同时,如果(!i)要检查零。由于true为1,false为0,所以!!(true)返回true,而!!(false)返回false。因此,当整数正在存储错误代码并希望将其结果归一化为布尔值并且它很短时,有时它很有用,但是我建议将其写清楚。 (即,如果(i!= 0),而不是如果(i))
希望以下内容对您有所帮助。
int i1 = -50, i2 = 0, i3 = 50;
if (i1)
printf("if(-50) passed\n");
if (i2)
printf("if(0) passed\n");
if (i3)
printf("if(50) passed\n");
if (!!i1)
printf("if(!!-50) passed\n");
if (!!i2)
printf("if(!!0) passed\n");
if (!!i3)
printf("if(!!50) passed\n");
if (!!true)
printf("if(!!true) passed\n");
if (!!false)
printf("if(!!false) passed\n");
OUTPUT:
if(-50) passed
if(50) passed
if(!!-50) passed
if(!!50) passed
if(!!true) passed