60分求解:仿函数和合法的判断式

bsnry 2012-02-29 09:55:45

并非所有的返回值的函数都是合法的判断式子。可能会导致很多出人意外的行为。  


怎么理解??

谁举个简单的例子, 会出现什么意外, 不会啊
...全文
173 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
恨天低 2012-03-01
  • 打赏
  • 举报
回复
看不出和仿函数有没关系。


仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。
振翅高飞 2012-02-29
  • 打赏
  • 举报
回复

#include <stdio.h>
int Test(int a)
{
if(0<a)
{
return -1;
}
else if(0==a)
{
return 0
}
else
{
return 1;
}
}

int main()
{
int a;
scanf("%d",&a);
if(Test(a))//只要不为0就是true 但是到底是正数还是负数???
{
printf("你输入的是负数还是正数,你猜呢?\n");
}
return 0;
}

振翅高飞 2012-02-29
  • 打赏
  • 举报
回复

#include <stdio.h>
int Test(int a)
{
if(0<a)
{
return -1;
}
else if(0==a)
{
return 0
}
else
{
return 1;
}
}

int main()
{
int a;
scanf("%d",&a);
if(Test(a))//只要不为0就是true 但是到底是正数还是负数???
{
printf("你输入的是负数还是正数,你猜呢?\n");
}
程序员小迷 2012-02-29
  • 打赏
  • 举报
回复
LZ说的和仿函数没啥关系吧

这个道理很简单啊,比如strcmp(str1, str2),如果相等返回0

if(strcmp(str1, str2))
{
// i thought that str is equal to str2, but it's wrong!!!!
.....
}

就是程序员可能不小心看错一些函数的返回值,以为是什么样子的。。
这句话是说程序员都会犯错,任何标准都可能有让人误解的地方


1楼说的没道理,和你问的没关系
bsnry 2012-02-29
  • 打赏
  • 举报
回复
这是stl ?? 仿函数???




[Quote=引用 5 楼 hondely 的回复:]

引用 2 楼 sunyongliang118 的回复:
C/C++ code


#include <stdio.h>
int Test(int a)
{
if(0<a)
{
return -1;
}
else if(0==a)
{
return 0
}
else
{
return 1;
}
}

int main()
{
int a;
scanf……
[/Quote]
hondely 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunyongliang118 的回复:]
C/C++ code


#include <stdio.h>
int Test(int a)
{
if(0<a)
{
return -1;
}
else if(0==a)
{
return 0
}
else
{
return 1;
}
}

int main()
{
int a;
scanf("%d",&a);
if(Test(a))……
[/Quote]

正解
xiyoulaoyuanjia 2012-02-29
  • 打赏
  • 举报
回复
if判断是2元行为,如果一个返回值包含大于2种可能的行为。则判断可能出错。。。例子。。。。
bsnry 2012-02-29
  • 打赏
  • 举报
回复
回答的对么

64,686

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧