1)不用额外变量实现变量交换
int a=1;
int b=2;
a=a+b;
b=a-b; //此时a变量值为3
a=a-b; //此时a变量值仍为3,b变量为1
问题:若a和b都很大的时候,会有溢出的可能。
2)大数相加(copy的一段代码)
std::string stringAdd( const std::string& strLeft,const std::string& strRight ) { //结果最长为较长数字加1 int nLeftLength = strLeft.length(); int nRigthLength = strRight.length(); int nLargeLength = nLeftLength >= nRigthLength ? nLeftLength : nRigthLength; std::string strResult( nLargeLength+1,'0' ); int nCount = 0; while( nLargeLength ) { char nTempLeft; if( nLeftLength ) { nTempLeft = strLeft[--nLeftLength]; } else { nTempLeft = '0'; } cout << "tempLeft:" << nTempLeft << std::endl; char nTempRigth; if( nRigthLength ) { nTempRigth = strRight[--nRigthLength]; } else { nTempRigth = '0'; } cout << "tempRight:" << nTempRigth << std::endl; //计算当前位的值 int nTemp = nTempLeft-'0' + nTempRigth-'0' + strResult[nLargeLength]-'0'; cout << "temp:" << nTemp << std::endl; strResult[nLargeLength] = (nTemp%10)+'0'; cout << "nLargeLength:" << nLargeLength << std::endl; //如果超过了10则应进1 if( nTemp >= 10 ) { strResult[nLargeLength-1] = 1+'0'; } nLargeLength--; } return strResult; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。