C++ 14 之 宏函数

c14宏函数.cpp

cpp 复制代码
#include <iostream>
using namespace std;

// #define PI 3.14
// 宏函数
// 宏函数缺陷1: 必须用括号保证运算的完整性
#define MY_ADD(x,y) ((x)+(y))

// 宏函数缺陷2:即使加了括号,有些运算依然与预期不符
#define MY_COM(a,b) (((a) < (b)) ? (a) : (b))

// 普通函数 不会出现与与其不符的恩情况
// void my_com_pu()
// {

// }

int main()
{
    // 缺陷1:
    // int a = 10;
    // int b = 20;
    // int res = MY_ADD(a,b);
    // int res = MY_ADD(a,b) * 2;  // a + b * 2   // 结果为50
    // int res = (MY_ADD(a,b)) * 2;    // (10 + 20) * 2
    // int res = MY_ADD(a, b) * 2;
    // cout << res << endl;
    // 
    // 缺陷2:
    int a = 10;
    int b =  20;
    int res = MY_COM(++a,b);    // 我认为是11 实际展开结果为:++a < b ? ++a : b 实际结果为12
    cout << res << endl;

    

    return 0;
}
相关推荐
曹牧几秒前
Bug定位
开发语言
linbaiwan6661 分钟前
PD和QC快充协议电压诱骗(取电)芯片:USB-C口支持PD,USB-A口支持QC
c语言·开发语言
大飞记Python1 分钟前
【2026更新】Python基础学习指南(AI版)——06函数
开发语言·人工智能·python
我是一颗柠檬4 分钟前
【JDK8新特性】函数式接口Day2
java·开发语言·后端·intellij-idea
计算机安禾6 分钟前
【c++面向对象编程】第45篇:萃取(Traits)技术与策略类:STL源码中的智慧
开发语言·c++
运筹vivo@7 分钟前
3043. 最长公共前缀的长度(Leetcode 每日一题)
c++·算法·leetcode·职场和发展·每日一题
Highcharts.js2 小时前
缺失数据可视化图表开发实战|Highcharts创建人员出生统计面积图表示例
开发语言·前端·javascript·信息可视化·highcharts·图表开发
测试员周周7 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
杜子不疼.9 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号39 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#