C语言 交换算法之加减法,及溢出防范

交换算法之加减法

前面的章节中介绍了C语言交换算法中的临时变量法,算是比较基础的一种方法,但是使用定义了一个临时的变量来临时存储参数(指针)指向的内存地址中存储的值,这就需要一个额外的内存空间。

这里介绍的加减法并不需要增加一个额外的内存空间,但是需要溢出防范,具体的可参考下方的示例代码。

加减法示例代码

cpp 复制代码
bool __builtin_add_overflow(type a, type b, type *res)

该函数是一些GCC和Clang编译器内置的函数,可以用于检测整数的加法是否会导致溢出。

cpp 复制代码
#include <stdio.h>
#include <limits.h>
void swapNumber(int *a, int *b) {
    if( a == b ) return;
    int sum;
    if(__builtin_add_overflow(*a, *b, &sum)){
        printf("整数溢出!\n");
        return;
    }
    *a = *a + *b;
    *b = *a - *b;
    *a = *a - *b;
}
int main() {
    int x = 255;
    int y = 166;
    
    swapNumber(&x, &y);
    printf("加减法置换数值之后: x = %d, y = %d\n", x, y);
    return 0;
}

代码编译运行,得到输出:

cpp 复制代码
加减法置换数值之后: x = 166, y = 255

全栈开发助手原文:C语言 交换算法之加减法,及溢出防范

免责声明:内容仅供参考!

相关推荐
2zcode5 分钟前
基于Matlab图像处理的静态雨滴去除与质量评估系统
开发语言·图像处理·matlab
吃着火锅x唱着歌25 分钟前
LeetCode 1616.分割两个字符串得到回文串
算法·leetcode·职场和发展
胎粉仔26 分钟前
Objective-c 初阶——异常处理(try-catch)
开发语言·ios·objective-c
小徐不徐说34 分钟前
RTSP协议详解与C++实现实例
开发语言·c++·qt·通信·rtsp
孟大本事要学习1 小时前
算法第28天|动态规划:基础理论、斐波那契数、爬楼梯、使用最小花费爬楼梯
算法·动态规划
LastWhisperw1 小时前
音频算法基础(语音识别 / 降噪 / 分离)
算法·音视频·语音识别
lingling0091 小时前
艾利特机器人:光伏机器人如何重塑清洁能源制造新格局
大数据·人工智能·算法
流星白龙1 小时前
【C++算法】75.优先级队列_数据流中的第 K 大元素
开发语言·c++·算法
Monkey的自我迭代1 小时前
python线性回归:从原理到实战应用
开发语言·python·机器学习
德育处主任Pro1 小时前
p5.js 三角形triangle的用法
开发语言·javascript·ecmascript