社区
Linux/Unix社区
帖子详情
C 真正的变量
小魔菇
2010-06-12 03:40:51
我看C专家编程中说
const int i = 2;
i并不是真正的常量
因为不能在switch的case中被使用
我用#define i 2 就可以了
想请教的是 为什么const int i = 2定义的就不是常量了?
这里的2不是不能被改变吗?
而define就可以了
请高手指点之下 谢谢
...全文
352
27
打赏
收藏
C 真正的变量
我看C专家编程中说 const int i = 2; i并不是真正的常量 因为不能在switch的case中被使用 我用#define i 2 就可以了 想请教的是 为什么const int i = 2定义的就不是常量了? 这里的2不是不能被改变吗? 而define就可以了 请高手指点之下 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
testoftesttest
2010-06-18
打赏
举报
回复
const int i = 2; 支持寻址 &i
#define i 2 不支持寻址&i
sabflying
2010-06-18
打赏
举报
回复
不错,变量不能用于分配栈空间
viinku
2010-06-16
打赏
举报
回复
学习了,常量和立即数
xx说就叫这个名字
2010-06-16
打赏
举报
回复
所以这种情况c是不允许的:
const int N = 10;
char str[N]; //这样是不允许的!因为N是一个只读变量,只是变量!
#define N 10
char str[N]; //这样是对的!
xx说就叫这个名字
2010-06-16
打赏
举报
回复
只读变量,常量!
在c语言中加const表示的就是只读变量,记住它是一个变量!而在c++中它就是一个常量;
在c中define宏定义的就是一个常量!
快乐田伯光
2010-06-14
打赏
举报
回复
常量就是常量,立即数就是立即数, 这二者怎么可以等同呢?
常量是放在数据段的, 而立即数是在代码段里头的,两者根本就不是一回事.
[Quote=引用 18 楼 yjzl1911 的回复:]
引用 14 楼 cceczjxy 的回复:
引用 12 楼 yjzl1911 的回复:
引用 11 楼 cceczjxy 的回复:
引用 10 楼 guosha 的回复:
#define i 2怎么会是一个常量呀? 这不就是一个立即数嘛.
对,他只是一个宏,不能算常量
宏展开后是一个立即数,立即数不就是一个整型常量吗?
展开后是个立即数不假,但好像不能把立即数和整……
[/Quote]
小魔菇
2010-06-14
打赏
举报
回复
在C专家编程里面说的
通过#define 和 enum定义的才是常量
xinzaiyiqi
2010-06-14
打赏
举报
回复
学习了
yjzl1911
2010-06-14
打赏
举报
回复
[Quote=引用 19 楼 guosha 的回复:]
常量就是常量,立即数就是立即数, 这二者怎么可以等同呢?
常量是放在数据段的, 而立即数是在代码段里头的,两者根本就不是一回事.
引用 18 楼 yjzl1911 的回复:
引用 14 楼 cceczjxy 的回复:
引用 12 楼 yjzl1911 的回复:
引用 11 楼 cceczjxy 的回复:
引用 10 楼 guosha 的回复:
#define i 2怎么会是一……
[/Quote]
翻了下资料 立即数和常量不是一个概念 :立即数应该是汇编里的术语;而常量是c语言里的术语
jo_say
2010-06-13
打赏
举报
回复
god
yjzl1911
2010-06-13
打赏
举报
回复
[Quote=引用 14 楼 cceczjxy 的回复:]
引用 12 楼 yjzl1911 的回复:
引用 11 楼 cceczjxy 的回复:
引用 10 楼 guosha 的回复:
#define i 2怎么会是一个常量呀? 这不就是一个立即数嘛.
对,他只是一个宏,不能算常量
宏展开后是一个立即数,立即数不就是一个整型常量吗?
展开后是个立即数不假,但好像不能把立即数和整形常量等同
[/Quote]
恩 我可能说得不到位 我的意思是 在楼主所说的情况 i展开后的立即数5是一个整型常量。不过 立即数的定义是什么? 我的理解是 立即数其实就是常量 只是类型可能有多种 如 整型 浮点型 等等
louyong0571
2010-06-13
打赏
举报
回复
学习了
cffa_edfe
2010-06-13
打赏
举报
回复
C不是,C++可以
cceczjxy
2010-06-12
打赏
举报
回复
[Quote=引用 12 楼 yjzl1911 的回复:]
引用 11 楼 cceczjxy 的回复:
引用 10 楼 guosha 的回复:
#define i 2怎么会是一个常量呀? 这不就是一个立即数嘛.
对,他只是一个宏,不能算常量
宏展开后是一个立即数,立即数不就是一个整型常量吗?
[/Quote]
展开后是个立即数不假,但好像不能把立即数和整形常量等同
cceczjxy
2010-06-12
打赏
举报
回复
[Quote=引用 11 楼 cceczjxy 的回复:]
引用 10 楼 guosha 的回复:
#define i 2怎么会是一个常量呀? 这不就是一个立即数嘛.
对,他只是一个宏,不能算常量
[/Quote]
自己给自己的:
我错了
yjzl1911
2010-06-12
打赏
举报
回复
[Quote=引用 11 楼 cceczjxy 的回复:]
引用 10 楼 guosha 的回复:
#define i 2怎么会是一个常量呀? 这不就是一个立即数嘛.
对,他只是一个宏,不能算常量
[/Quote]
宏展开后是一个立即数,立即数不就是一个整型常量吗?
cceczjxy
2010-06-12
打赏
举报
回复
[Quote=引用 10 楼 guosha 的回复:]
#define i 2怎么会是一个常量呀? 这不就是一个立即数嘛.
[/Quote]
对,他只是一个宏,不能算常量
快乐田伯光
2010-06-12
打赏
举报
回复
#define i 2怎么会是一个常量呀? 这不就是一个立即数嘛.
太乙
2010-06-12
打赏
举报
回复
[Quote=引用 6 楼 eclipse_2 的回复:]
引用 3 楼 hqin6 的回复:
Assembly code
#include <iostream>
using namespace std;
int main()
{
const int i = 10;
int* p = const_cast<int*>(&i);
cout << hex << p << endl;
cout << hex << &……
[/Quote]你需要去掉编译器的优化~~~即使用:*((int*)&i)
jiangfeng999
2010-06-12
打赏
举报
回复
学习了,ding
加载更多回复(7)
2023-03-31 项目笔记-第一阶段-4.
变量
、常量 4.1 定义
变量
的方法
【C语言
变量
与常量定义方法】 在C语言中,
变量
是存储数据的容器,而常量则是不可修改的值。接下来我们将详细讲解C语言中如何定义
变量
和常量。 4.1 定义
变量
的方法 1. **基本类型
变量
**:C语言中的基本数据类型...
C语言新手入门之格式化输出和
变量
类型
在C语言中,没有真正意义上的布尔类型,而是用一个整数来表示。0表false,1表示true。 四、数据类型大小 在C语言中,可以使用sizeof运算符来检测一个
变量
的大小。sizeof运算符返回一个long unsigned int类型的值,...
C语言实例解析精粹
总的来说,【C语言实例解析精粹】提供的不仅仅是理论知识,更重要的是通过实例让学习者能够动手实践,从而真正掌握C语言。无论是入门还是进阶,这本书都是一个宝贵的资源。同时,附带的URL链接可能指向更多的教程和...
C语言全局
变量
和局部
变量
讨论全局和局部
变量
时,其实就是对
变量
的作用域进行讨论; 局部
变量
是什么?首先是一个
变量
,其次,这个
变量
只是在程序的局部范围内有效; 局部
变量
定义在那些位置: 1. 函数的开头; 2. 函数内的复合语句...
c语言 申请
变量
函数,C语言中
变量
和函数
C语言中
变量
和函数今天我想写一下c语言中的
变量
和函数.其实以前也对这有所了解,但是今天我觉得才真正了解.(如果说的不对或者说的不够有深度请谅解).每一个学过c语言的都知道
变量
和函数的.但是我以前对
变量
的...
Linux/Unix社区
23,224
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章