函数前添加一个感叹号的疑惑?解决办法
函数前添加一个感叹号的疑惑?经常看到函数前添加一个感叹号,但是对这个理解一直很疑惑?假如有一个函数:fun
函数前添加一个感叹号的疑惑?
经常看到函数前添加一个感叹号,但是对这个理解一直很疑惑?
假如有一个函数:
funName(arg1,arg2)
{
...
}
该函数执行成功返回非零值;如果执行失败,则返回零;
if(!funName(arg1,arg2))
{
...
}
那么if(!funName(arg1,arg2))执行的结果理解到底是"如果函数funName不等于0" 还是 "函数funName结果为零,然后在来个非(!)"
[解决办法]
函数运行结果求非之后不等于 0.
即函数运行结果等于 0. if 成立.
也就是, 如果函数执行不成功的话如何如何
[解决办法]
函数返回值 取反而已!!
[解决办法]
if (!func())
{}
如果func()执行结果为真,加!取反,也就是(!func())为假,不执行if内语句
如果func()执行结果为假,加!取反,也就是(!func())为真,则执行if内语句
[解决办法]
不是取反,是取逻辑非。
[解决办法]
在C语言里,对所有非float和double型数值表达式而言:
!a 等价于 a == 0
a 等价于 a != 0
[解决办法]
[解决办法]逻辑非
[解决办法]如果funName()的返回值是0这个if语句就成立。。。
[解决办法][解决办法][解决办法][解决办法][解决办法]在C语言里,对所有非float和double型数值表达式而言:
!a 等价于 a == 0
a 等价于 a != 0
[解决办法]问题弄复杂了,函数没所谓执行是否成功。只有一个特定的返回值。加了!号,就只分真假了,也就映射到 0,1空间了。
[解决办法]