| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2777 人关注过本帖, 1 人收藏
标题:自己写了一个大数加法,请各位个点意见
只看楼主 加入收藏
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 10楼 九转星河
都不行的 不管是 i--还是--i 两个序列点中间多次修改都是未定义行为的

https://zh.
2018-05-31 15:56
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
以下是引用lin5161678在2018-5-31 15:56:24的发言:

都不行的 不管是 i--还是--i 两个序列点中间多次修改都是未定义行为的

那我先记下了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-31 16:24
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
学习了
2018-05-31 22:46
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
收藏
得分:4 
要短么一行就够了
程序代码:
#include <stdio.h>
#include <malloc.h>
#include <string>
#include <string.h>

int main(int argc, char** argv)
{
        int i,j,k;
        char cNum1[1024]="1212121287236827364783468678687261382761827";
        char cNum2[1024]="29836782638723626389462834762387562378527835274537";
        char cResult[1025]={0};

        for(i = strlen(cNum1) - 1,j=strlen(cNum2) - 1,k=0; i >=0 || j >= 0; i--,j--,k++)
                (cResult[k] += (( i>=0 && j>=0 ? cNum1[i]-'0' + cNum2[j]-'0' : (i>=0 ? cNum1[i]-'0' : cNum2[j]-'0')))) >= 10 ? cResult[k]-=10,cResult[k+1]+=1:0;


        for(i = k - 1; i >= 0; i--)
                printf("%d ", cResult[i]);
        printf("\n");
        return 0;
}

2018-06-01 10:15
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
(cResult[k] += (( i>=0 && j>=0 ? cNum1[i]-'0' + cNum2[j]-'0' : (i>=0 ? cNum1[i]-'0' : cNum2[j]-'0')))) >= 10 ? cResult[k]-=10,cResult[k+1]+=1:0;

全部括号都是多余的??
什么鬼
如果你没掌握各个符号的优先级 那么你最好不要写这么复杂的表达式

https://zh.
2018-06-01 10:47
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 14楼 烟雨晨曦
经测试9+1=0,再就是感觉通过这种方式减少行数似乎有点耍赖,毕竟代码除了完成功能外,还有清晰整洁好维护的要求,再说你这也不算一行嘛。

另@lin5161678:你说的有道理,?: 自带序列点 不会导致在两个序列点中间多次读写同一个变量,可以减少两行代码,TKS!

能编个毛线衣吗?
2018-06-01 11:05
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
收藏
得分:0 
回复 16楼 wmf2014
9+1=0 是因为打印的问题并不是计算错误哦,只是没把十位打印出来而已


[此贴子已经被作者于2018-6-1 12:57编辑过]

2018-06-01 12:52
快速回复:自己写了一个大数加法,请各位个点意见
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021976 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved