打印

请教一个小程序

[复制链接]
1861|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 渤海三叠浪 于 2012-9-12 07:43 编辑

两个字节 INT8U i  和 INT8U  jif (两个数的差的绝对值大于5) {
       j = i;
}

请问这程序咋写?

相关帖子

沙发
20120703| | 2012-9-12 07:50 | 只看该作者
1# 渤海三叠浪
 

if((i>j+5)||(j>i+5))
{
      j=i;
}

使用特权

评论回复
板凳
20120703| | 2012-9-12 08:05 | 只看该作者
test_1.rar (3.23 KB)

使用特权

评论回复
地板
渤海三叠浪|  楼主 | 2012-9-12 09:31 | 只看该作者
本帖最后由 渤海三叠浪 于 2012-9-12 09:33 编辑

楼上感谢你啊  不过请问 你考虑溢出了么

使用特权

评论回复
5
airwill| | 2012-9-12 13:56 | 只看该作者
本帖最后由 airwill 于 2012-9-12 13:58 编辑

对啊, 2楼 的程序没有考虑溢出问题, 所以是有 BUG 的.
类似问题, 我以前是这样处理的: (我假设INT8U 是 unsigned char)
if((i-j+5)>10)
{
      j=i;
}
大家看看有没有问题.

使用特权

评论回复
6
yewuyi| | 2012-9-12 17:52 | 只看该作者
对啊, 2楼 的程序没有考虑溢出问题, 所以是有 BUG 的.
类似问题, 我以前是这样处理的: (我假设INT8U 是 unsigned char)
if((i-j+5)>10)
{
      j=i;
}
大家看看有没有问题. ...
airwill 发表于 2012-9-12 13:56


要是怕溢出还不简单嘛,呵呵,直接设个中间变量,该中间变量的取值范围比i,j大一倍不就行了嘛,例如此处设一中间变量:signed   long int k;

然后再加或减就行了啊。

这个方法是不是有点缺心眼啊。。。:L

使用特权

评论回复
7
airwill| | 2012-9-12 21:26 | 只看该作者
本帖最后由 airwill 于 2012-9-13 07:20 编辑

to 楼上, 你的办法不错, 不过不觉得效率太低吗?
特别是在 8 位机里, 弄个 16 位变量出来.
我的代码还是8位运算和比较, 如果可以避免溢出的影响, 效率又高
怎么叫 "缺心眼" 呢?

使用特权

评论回复
8
416775364TP| | 2012-9-12 23:36 | 只看该作者
本帖最后由 416775364TP 于 2012-9-12 23:42 编辑

还是有毛病,都有溢出,中间变量比较靠谱

使用特权

评论回复
9
yewuyi| | 2012-9-13 08:29 | 只看该作者
to 楼上, 你的办法不错, 不过不觉得效率太低吗?
特别是在 8 位机里, 弄个 16 位变量出来.
我的代码还是8位运算和比较, 如果可以避免溢出的影响, 效率又高
怎么叫 "缺心眼" 呢? ...
airwill 发表于 2012-9-12 21:26


我说我那个扩展字长的方法显得有点缺心眼,不是说你那个,呵呵,你误会了。

使用特权

评论回复
10
渤海三叠浪|  楼主 | 2012-9-13 10:11 | 只看该作者
多谢楼上各位大侠

这样怎么样  大家觉得

if ((i   > j) && (i - j ) >5)  ||  ((j  > i) && (j - i ) >5)

使用特权

评论回复
11
wookongbun| | 2012-9-13 11:17 | 只看该作者
if ( abs(i - j) > 5 ) {

}

使用特权

评论回复
12
渤海三叠浪|  楼主 | 2012-9-16 22:01 | 只看该作者
11# wookongbun
你这abs不算  不让用。
除非你给出函数   函数咋写  多谢   不能只有原型啊

使用特权

评论回复
13
渤海三叠浪|  楼主 | 2012-9-16 22:01 | 只看该作者
多谢楼上各位大侠

这样怎么样  大家觉得

if ((i   > j) && (i - j ) >5)  ||  ((j  > i) && (j - i ) >5)
渤海三叠浪 发表于 2012-9-13 10:11

我这咋样 大家say  say

使用特权

评论回复
14
海川先生| | 2012-9-16 22:09 | 只看该作者
13# 渤海三叠浪
这个可以啊

使用特权

评论回复
15
zhm8508| | 2012-9-18 16:59 | 只看该作者
#define ABS(x)                                         ((x) >= 0) ? (x) : -(x)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

637

帖子

1

粉丝