鱼C论坛

 找回密码
 立即注册
查看: 4558|回复: 11

宏定义和赋值的区别?

[复制链接]
发表于 2019-9-8 13:04:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
百度上给的是宏定义出来是常量 赋值是变量。假如宏定义a 是5,那么以后出现的a都是5,用int 赋值a=5之后 a也是5 。他们的区别在哪里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-8 14:44:23 | 显示全部楼层
本帖最后由 jackz007 于 2019-9-8 14:46 编辑

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

评分

参与人数 1荣誉 +5 鱼币 +2 贡献 +3 收起 理由
落花于梦 + 5 + 2 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-8 15:34:01 | 显示全部楼层
int 赋值a=5之后,这个值可以修改,是一个变量。而宏定义是常量,编译器对两者处理的时间也不一样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

把宏定义后面的值直接改掉不就行了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那这样的话宏定义应用在什么地方呢(赋值干不了的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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) ;
         
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-9 12:22:26 | 显示全部楼层

第七行代码什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-9 12:46:34 | 显示全部楼层
      定义 2 个浮点型变量 a 和 s。

      楼主,你连这么 ABC 的知识都不了解,就在这里频繁提问,你是想累死别人吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-12 17:09:23 | 显示全部楼层
项恩浩 发表于 2019-9-8 22:49
那这样的话宏定义应用在什么地方呢(赋值干不了的)

宏定义一般是用做常量。比如圆周率是3.14,可以用宏定义,等过段时间,我想用精度高点的3.1416.这个时候只需要去改宏定义就行,而不需要去修改每一个用到圆周率的地方。
再或者,你给某个数设置一个上限,最大为100,以后需要扩展的话,只要修改宏定义为1千或者1万
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 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 标识符 数值
就是把标识符赋值为后面的数值
常量是不能在代码体里面改变的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那就当我没说吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-9-13 20:47:27 | 显示全部楼层

不是这句话的意思是
我非常同意您的观点(表示同意到了极点)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 01:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表