常见C语言基础说明四:#define宏定义与 a--

一.  简介

前面几篇学习了  C语言中基础问题,文章如下:

常见C语言基础题说明一-CSDN博客

常见C语言基础说明二:位运算问题-CSDN博客常见C语言基础说明三:static修饰的函数或变量-CSDN博客常见C语言基础说明二:位运算问题-CSDN博客

本文继续学习 嵌入式C开发中,可能涉及的一些C语言基础问题。

二.  常见C语言基础说明三:#define 宏定义 与 a--

1.  #define 的使用

#define的用法分为两种:

(1)  无参宏定义:其一般形式为“#define 宏名 字符串”。例如,“#define PI 3.14159”,在预处理阶段,编译器会将所有的PI替换为3.14159。需要注意的是,宏名的定义通常使用大写字母,以区别于变量;宏定义末尾不需要加分号;宏定义不分配内存,而变量定义会分配内存。此外,如果字符串过长,可以分成几行写,除了最后一行外,每行的后面都加一个反斜杠(续行符)

(2)  带参宏定义:其一般形式为“#define 宏名(参数表) 字符串”。例如,“#define MAX(a, b) ((a) > (b) ? (a) : (b))”,在预处理阶段,编译器会将所有的MAX(a, b)替换为((a) > (b) ? (a) : (b))。需要注意的是,带参宏定义中的参数没有类型,预处理器只进行简单的文本替换,不进行任何类型检查或计算。为了避免出现错误,最好将宏定义中的参数和操作符都用括号括起来,以确保运算的优先级正确。

有如下 #define 宏定义,计算如下结果:

#include <stdio.h>

#define  SUM(A, B)  A+B

int main(void)
{ 
    int a = 5;
    int b= 6;
    int c = 0;

    c = 2*SUM(a, b+1);
    printf("%d\n", c);
    return 0;
}

分析:

#define宏定义 在C语言中,这是一种预处理命令,用于将一个标识符(宏名)定义为一个字符串(替换文本)。

其本质是一种文本替换,预处理程序在编译前会进行宏替换,用被定义的字符串替换程序中的宏名。

因此,c = 2*SUM(a, b+1) 经过(预处理阶段后)文本替换展开后为:

c = 2*a+b+1,也就是 2*5 + 6 +1为 17。

2.  a-- 操作

执行如下代码,计算如下结果:

#include <stdio.h>

int main(int argc, char* argv)
{
    int a = 5;
    while(a--)
    {
        printf("%d", a);
    }

    return 0;
}

打印结果如下:

43210

分析如下:

a-- 操作:首先获取变量 a 的当前值,然后将该值减 1,最后将减后的值重新赋值给变量 a。

也就是说先在 a 所在的表达式中使用a的当前值,之后让a减1。

而--a 是先减少后使用,让a先减1,然后在a所在的表达式中使用a的新值

所以,打印结果为: 43210

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值