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;
}
相关推荐
小小小小王王王几秒前
洛谷-P1886 【模板】单调队列 / 滑动窗口
c++·算法
lsx2024069 分钟前
Python3 SMTP发送邮件教程
开发语言
懈尘10 分钟前
从 Java 1.7 到 Java 21:逐版本深入解析新特性与平台演进
java·开发语言
凉辰13 分钟前
使用uni.createInnerAudioContext()播放指定音频(踩坑分享功能)
开发语言·javascript·音视频
hello 早上好15 分钟前
05_Java 类加载过程
java·开发语言
PPPPPaPeR.27 分钟前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
橙露29 分钟前
Java并发编程进阶:线程池原理、参数配置与死锁避免实战
java·开发语言
froginwe1130 分钟前
C 标准库 - `<float.h>`
开发语言
历程里程碑36 分钟前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Sheep Shaun38 分钟前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制