讨论帖:define 与 const
c语言吧
全部回复
仅看楼主
level 6
XKX345
楼主
#include<stdio.h>
int main(void)
{
int const max=10;
//#define MAX 50
int num[max]; //此处为何能用变量?
printf("%d\n",sizeof(num));
int A =10;
switch(A)
{
case max:printf("10\n");break; //此处为何能用变量?
case 11:printf("11\n");break;
break;
}
return 0;
}
2014年03月22日 02点03分
1
level 13
z什么什么k
把C代码当作C++代码编译么……
2014年03月22日 02点03分
2
XKX345
不行?
2014年03月22日 02点03分
z什么什么k
回复 XKX345 :c和c++对const的规定不同而已……
2014年03月22日 02点03分
XKX345
回复 zjfaok :能具体说一下吗?
2014年03月22日 02点03分
XKX345
回复 zjfaok :我不知道这个
2014年03月22日 02点03分
level 6
XKX345
楼主
switch语句规则
case标签必须是常量表达式(constant Expression)
只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
不要问为什么,C就这规定!我们只需要了解规则,学会应用即可!(这个也是我们在某些时候学习知识的一种合理的心态,避免进入思维误区)
2014年03月22日 02点03分
3
level 6
XKX345
楼主
2014年03月22日 02点03分
4
level 6
XKX345
楼主
请高手帮我解答那两个为什么、
2014年03月22日 02点03分
5
level 6
XKX345
楼主
请高手帮我解答一下那两个为什么、
2014年03月22日 02点03分
6
level 13
小_埃
1、请分清C和C++(*.c和*.cpp)
2、请分清C99(VLA,可变长度数组)
3、const关键字实际上应该理解为readonly,因为它并不是常量,而是只读变量
2014年03月22日 02点03分
7
XKX345
请具体说一下 第一点 C 和C++怎么了? 第二点 我用的是VC编译器 不知道它允不允许在定义时使用用变量做数组下标 第三点 我的疑问就是因为它是一个变量而不是常量 也行
2014年03月22日 02点03分
小_埃
回复 XKX345 :看清楚你的源代码文件扩展名是c还是cpp,绝大多数编译器按扩展名决定按C方式编译还是按C++方式编译。
2014年03月22日 02点03分
小_埃
VC看你用的哪个版本,我记得201x的某个版本虽然不支持C99,但加入了VLA的支持。之前的版本没有VLA。(这是指C语言的情况,如果C++的话另说)
2014年03月22日 02点03分
小_埃
最后,你的代码去掉const关键字也照样能编译通过,因为编译器对const的理解仅仅是只读变量而已,如果你没有修改这个变量,那么加不加const都一样能编译通过。
2014年03月22日 02点03分
level 6
XKX345
楼主
@小_埃
2014年03月22日 03点03分
8
小_埃
改成.c后缀就报错了吧?报错提示的滚动条往上拉,看看报错内容吧
2014年03月22日 03点03分
XKX345
回复 小_埃 :请看楼下
2014年03月22日 03点03分
level 6
XKX345
楼主
好吧 搞了半天是编译器的原因 其实我是在验证书上的一个知识点 既然这样 我直接把那个知识点贴出来 大神们给解答一下 是C的,别叫我去C++吧。。。。
2014年03月22日 03点03分
9
level 6
XKX345
楼主
2014年03月22日 03点03分
10
level 6
XKX345
楼主
2014年03月22日 03点03分
11
level 13
小_埃
书上写的清清楚楚:“const变量”
其实const改为readonly更适合,你当做readonly看就不会有这些疑问了。
2014年03月22日 03点03分
12
XKX345
我的疑问就是变量这两个字 我记得在数组定义时候,其长度的是不能用数组的 好像有这书法的 如果我没记错的话
2014年03月22日 03点03分
XKX345
回复 XKX345 :额。。。。傻了 是不能用变量的
2014年03月22日 03点03分
XKX345
说法。。。。。
2014年03月22日 03点03分
小_埃
回复 XKX345 :都说了分清C和C++,哎……
2014年03月22日 03点03分
level 13
小_埃
百度最近不知道怎么了,回贴经常不显示,要过很久才能出来,很奇怪……
2014年03月22日 03点03分
13
XKX345
的确
2014年03月22日 03点03分
level 1
精神不正常___
最炫民族风 - 凤凰传奇
大神0zr
2014年03月22日 03点03分
15
XKX345
哥 我这是在求解。。。。。。。不是在炫耀、
2014年03月22日 03点03分
精神不正常___
回复 XKX345 :轻松轻松,有益学习。
2014年03月22日 03点03分
level 6
XKX345
楼主
既然说到const 我再贴一张图 给那些还不清楚的哥们看看吧
以前都没怎么注意这些呢、
2014年03月22日 03点03分
16
level 5
猪宝宝🐷土特产
我一般都写const int a=0;= =
2014年03月22日 04点03分
17
level 12
沫忆失忆v
.
2014年03月22日 05点03分
18
1