项恩浩 发表于 2019-9-8 13:04:30

宏定义和赋值的区别?

百度上给的是宏定义出来是常量 赋值是变量。假如宏定义a 是5,那么以后出现的a都是5,用int 赋值a=5之后 a也是5 。他们的区别在哪里

jackz007 发表于 2019-9-8 14:44:23

本帖最后由 jackz007 于 2019-9-8 14:46 编辑

      宏定义是文本替换,是给编译器下达的指令,宏定义本身并不产生变量。赋值需要先定义变量,是会在代码运行过程中实际执行到的指令。

shake_a_tree@16 发表于 2019-9-8 15:34:01

int 赋值a=5之后,这个值可以修改,是一个变量。而宏定义是常量,编译器对两者处理的时间也不一样。

项恩浩 发表于 2019-9-8 22:47:02

shake_a_tree@16 发表于 2019-9-8 15:34
int 赋值a=5之后,这个值可以修改,是一个变量。而宏定义是常量,编译器对两者处理的时间也不一样。

把宏定义后面的值直接改掉不就行了吗

项恩浩 发表于 2019-9-8 22:49:37

shake_a_tree@16 发表于 2019-9-8 15:34
int 赋值a=5之后,这个值可以修改,是一个变量。而宏定义是常量,编译器对两者处理的时间也不一样。

那这样的话宏定义应用在什么地方呢(赋值干不了的)

jackz007 发表于 2019-9-8 23:56:15

本帖最后由 jackz007 于 2019-9-8 23:57 编辑

#include <stdio.h>

#define pi 3.1415926

main(void)
{
      float a , s            ;
      a = pi                   ;
      s = 3.5 * 3.5 * pi       ;
      printf("a = %.3f\n" , a) ;
      printf("s = %.3f\n" , s) ;
         
}

项恩浩 发表于 2019-9-9 12:22:26

jackz007 发表于 2019-9-8 23:56


第七行代码什么意思

jackz007 发表于 2019-9-9 12:46:34

      定义 2 个浮点型变量 a 和 s。

      楼主,你连这么 ABC 的知识都不了解,就在这里频繁提问,你是想累死别人吗?

shake_a_tree@16 发表于 2019-9-12 17:09:23

项恩浩 发表于 2019-9-8 22:49
那这样的话宏定义应用在什么地方呢(赋值干不了的)

宏定义一般是用做常量。比如圆周率是3.14,可以用宏定义,等过段时间,我想用精度高点的3.1416.这个时候只需要去改宏定义就行,而不需要去修改每一个用到圆周率的地方。
再或者,你给某个数设置一个上限,最大为100,以后需要扩展的话,只要修改宏定义为1千或者1万

2164930278 发表于 2019-9-12 17:56:42

shake_a_tree@16 发表于 2019-9-12 17:09
宏定义一般是用做常量。比如圆周率是3.14,可以用宏定义,等过段时间,我想用精度高点的3.1416.这个时候 ...

I can't agree with you!!
宏定义:#define 标识符 数值
就是把标识符赋值为后面的数值
常量是不能在代码体里面改变的

shake_a_tree@16 发表于 2019-9-12 17:58:42

2164930278 发表于 2019-9-12 17:56
I can't agree with you!!
宏定义:#define 标识符 数值
就是把标识符赋值为后面的数值


那就当我没说吧

2164930278 发表于 2019-9-13 20:47:27

shake_a_tree@16 发表于 2019-9-12 17:58
那就当我没说吧

不是这句话的意思是
我非常同意您的观点(表示同意到了极点)
页: [1]
查看完整版本: 宏定义和赋值的区别?