首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

函数前添加一个感叹号的疑惑?解决办法

2012-09-19 
函数前添加一个感叹号的疑惑?经常看到函数前添加一个感叹号,但是对这个理解一直很疑惑?假如有一个函数: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执行结果不为零,那么if(!funName(arg1,arg2))可以理解"如果funName不为零",其结果就是执行if中的代码;
如果函数funName执行结果为零,那么if(!funName(arg1,arg2))可以理解"非funName(),结果为真",其结果仍然执行if中的代码;

以上是我的理解,请问,我哪里理解有问题?

[解决办法]
逻辑非
[解决办法]
如果funName()的返回值是0这个if语句就成立。。。
[解决办法]
探讨
感觉比较乱;
到底对函数判断是逻辑判断还是非逻辑判断?

[解决办法]
探讨
如果函数funName执行结果不为零,那么if(!funName(arg1,arg2))可以理解"如果funName不为零",其结果就是执行if中的代码;
如果函数funName执行结果为零,那么if(!funName(arg1,arg2))可以理解"非funName(),结果为真",其结果仍然执行if中的代码;

以上是我的理解,请问,我哪里理解有问题?

[解决办法]
探讨

感觉比较乱;
到底对函数判断是逻辑判断还是非逻辑判断?

[解决办法]
探讨
引用:

楼主知道什么叫返回值吗?!!!

返回值有逻辑返回值,例如正确执行返回TRUE ,执行失败返回FALSE
返回值还有具体返回值,例如正确执行返回具体常数,执行失败则返回0;

[解决办法]
在C语言里,对所有非float和double型数值表达式而言:

!a 等价于 a == 0
 a 等价于 a != 0



[解决办法]
问题弄复杂了,函数没所谓执行是否成功。只有一个特定的返回值。加了!号,就只分真假了,也就映射到 0,1空间了。
[解决办法]
探讨

感觉比较乱;
到底对函数判断是逻辑判断还是非逻辑判断?

热点排行
Bad Request.