下面的代码如何写???

xiao_xiao_zi 2009-09-24 09:04:32
写个整数的加法函数,
函数形式可以是这样的
bool add(int &c,int a,int b);
...全文
256 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
leijunyuncyuyan 2009-09-25
  • 打赏
  • 举报
回复
up
china_eda 2009-09-25
  • 打赏
  • 举报
回复
up
challenge99 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 challenge99 的回复:]

if((tmp = a ^ b) < (~0 - 1) { // 符号相同

[/Quote]

if((tmp = a ^ b) < ((unsigned int)~0 >> 1 + 1))
Wolf0403 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fetag 的回复:]
引用 3 楼 dizuo 的回复:
引用是C++里面的概念啊


我要是没记错的话,C99也是支持引用的!

很奇怪你这函数为啥返回一个bool类型的值呢?按照逻辑,add是这样写的啊:

int add(int a, int b)
{
    return (a+b);
}

[/Quote]

C99 有引用?
challenge99 2009-09-24
  • 打赏
  • 举报
回复
bool add(int &c, int a, int b)
{
unsigned int tmp = 0;

if((tmp = a ^ b) < (~0 - 1) { // 符号相同
if(a > 0) {
if(a + b < 0) return ERROR;
}
if(a < 0) {
if(a + b > 0) return ERROR;
}


c = a + b;
return OK;
}
pigniyan 2009-09-24
  • 打赏
  • 举报
回复
bool add(int &c,int a,int b)//&C这里用的是C的地址
{
*c=a+b;
return(true);
}
iblold 2009-09-24
  • 打赏
  • 举报
回复
bool add(int& c,int a,int b)
{
long long n = a + b;
c = n
return !(n>>32)
}
selooloo 2009-09-24
  • 打赏
  • 举报
回复
既然返回类型为bool,应该考虑下溢出吧,

bool add(int *c,int a,int b)
{
double t,high,low;
int min=0x80000000,max=0x7fffffff;//c的值比max大,或者比min小,即视为溢出
low=(double)min;
high=(double)max;
t=(double)a+(double)b;
if(t>high || t<low)
{
puts("Overflow");
printf("real value= %f\n",t);//溢出后的值
return false;
}
else
*c=(int)t;
return true;
}
teng0210 2009-09-24
  • 打赏
  • 举报
回复

typedef enum{true=1,false=0} bool;

bool add(int *c,int a,int b){
*c=a+b;
return true;
}
aozhi 2009-09-24
  • 打赏
  • 举报
回复
从设计的角度,lz的函数确实不是很好

建议按照下面进行声明。
int add(int a, int b , bool &overflow);
这样可以实现
bool of;
int res,x,y,z;
res=add(add(x,y,&of),c,&of);

fireyou 2009-09-24
  • 打赏
  • 举报
回复
为啥有这样的要求
独孤过儿 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dizuo 的回复:]
引用是C++里面的概念啊

[/Quote]
我要是没记错的话,C99也是支持引用的!

很奇怪你这函数为啥返回一个bool类型的值呢?按照逻辑,add是这样写的啊:

int add(int a, int b)
{
return (a+b);
}
xiao_xiao_zi 2009-09-24
  • 打赏
  • 举报
回复
对,有溢出咋办呢???就是怎么判断溢出呢???
liangyonglou 2009-09-24
  • 打赏
  • 举报
回复
1 2 楼正解
cphj 2009-09-24
  • 打赏
  • 举报
回复
楼上各位,返回值应该表示有没有溢出吧?否则永远都返回true了
ryfdizuo 2009-09-24
  • 打赏
  • 举报
回复
引用是C++里面的概念啊
ryfdizuo 2009-09-24
  • 打赏
  • 举报
回复
bool add(int& c, int a, int b)
{
c = a + b;

return true;
}
blingpro 2009-09-24
  • 打赏
  • 举报
回复
{
c= a+b;
return true;
}
24K純帥 2009-09-24
  • 打赏
  • 举报
回复
up
witheart 2009-09-24
  • 打赏
  • 举报
回复
bool add(int &c,int a ,int b)
此处定义C为地址变量,所以真正用的时候该用指针吧
那么1,2楼 的看上去该有问题了
把两个和当做地址,一般不这么操作啊
还有,就是这个楼主问题不清楚,我觉得下面几个不错
{
*c=a+b;
return 1;
}
这样是该正确了

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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