const是可以确定类型的定义常量
define是不定义类型的常量吗
除了这个还有其他的区别吗
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
c语言中const和define有什么区别
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
CSDN专家-天际的海浪 2022-01-11 15:02关注const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。
有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。编译时define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。所以编译时不能进行数据类型检验。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。
const定义的常量,在编译时进行严格的类型检验,可以避免出错。在程序运行时在常量表中,系统为它分配内存。
define定义表达式时要注意“边缘效应”,例如如下定义:
#define N 2+3//我们预想的N值是5,我们这样使用N
a=N/2; //我们预想的a的值是2,可实际上a的值是3
原因在于在预处理阶段,编译器将a=N/2处理成了a=2+3/2;这就是宏定义的字符串替换的“边缘效应”因此要如下定义:
#define N (2+3)
const定义表达式没有上述问题。
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 1无用 1举报 编辑记录微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2021-09-20 09:42回答 1 已采纳 宏定义就是简单的字符替换DOUBLE(1+2)等价于2*1+2,结果就是41+2这里不会加括号。下面的一个道理
- 2021-05-30 15:25回答 2 已采纳 简单修改了一下代码,涉及到long型ID的地方,需要用%ld进行显示或者输入,记得点赞哦 int MaxScore(struct student ary[],int size) {
- 2022-05-27 03:42回答 3 已采纳 在你代码基础上增加了功能,通过结构体数组实现,通过递归进行计算,从8进4、4进2,2进1为止,每轮比赛输出比赛的双方及结果。最后输出总排名,运行结果如下: 代码: #define _CRT_SEC
- 2020-07-20 20:02然而,随着编程实践的深入,我们逐渐认识到,虽然#define可以用于定义简单的常量,但是const提供的是更加严格和安全的数据类型,有助于编程中的抽象和封装。 随着编程语言的发展,许多现代编程语言提供了更加强大和...
- 2022-06-15 08:10回答 2 已采纳 帮你重新弄了下,只是你有写函数并未实现。所以我注释起来了。你写完函数再放开 #include <stdio.h> #include <stdlib.h> #include &l
- 2022-09-30 06:01回答 2 已采纳 PRT里定义了2个print,不是一个,你不加分号的话,不成语法错误了?你看后一个print就没有加分号,否则替换完后面会跟2个分号
- 2022-03-01 10:21回答 4 已采纳 #include <stdio.h> #include <stdlib.h> #define SIZE 100 typedef struct _Student {
- 2022-02-21 13:50空弦的编程小屋的博客 一.const 使用 const是 constant 的缩写,“恒定不变”的意思。被 const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书籍建议:“Use const whenever you need”。 1...
- 2023-04-07 12:55回答 1 已采纳 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h&
- 2019-07-06 07:21回答 2 已采纳 WinAPI 对窗口过程的调用相当严密, 应当将函数TextPrint转回WndProc函数,即放弃封装.
- 2019-07-06 07:19回答 2 已采纳 WinAPI 对窗口过程的调用相当严密, 应当将函数TextPrint转回WndProc函数,即放弃封装.
- 2020-09-05 06:36在C语言编程中,`const`关键字和`#define`预处理器宏是两种常见的常量定义方式,但它们之间存在显著的区别。理解这些差异对于编写更高效、更可维护的代码至关重要。 首先,`const`关键字是C语言的正式组成部分,它...
- 2021-09-09 02:08猿说编程的博客 目录 一.const 使用 1.const 修饰变量 2.const 修饰指针 ...三.const 和 define 区别 1.就起作用的阶段而言 2.就起作用的方式而言 3.就存储方式而言 4.从代码调试的方便程度而言 5.从效率程度而言 四.c
- 2022-07-31 04:42香菜是个好东西的博客 C语言学习笔记->const和define区别
- 2021-05-22 00:41weixin_39657094的博客 这有一个非常可靠的原因:C中的const并不意味着一些常量。 这只是意味着一个variables是只读的。在编译器需要一个常量的地方(例如非VLA数组的数组大小),使用constvariables(如fieldWidth是不可能的。他们不一样...
- 没有解决我的问题, 去提问
问题事件
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司