switch和if问题
为啥注释的if语句可以执行,但是switch不能执行,执行switch时编译器说MOLD重定义 本帖最后由 sunrise085 于 2020-9-18 10:19 编辑这是作用域问题。整个switch是一个作用域,所以你那样写就会报错说重定义
而 if 语句块自身是一个作用域,也就是说你在if…else if…相当于两个不同的作用域,所以两个不冲突
再者,你这两种定义方式,都是仅限于作用域内使用,出了作用域就无效了。所以这两种写法意义都不大
你可以看看下面这个程序,第9行是会报错的。
#include <stdio.h>
int main(void) {
int select1;
scanf("%d",&select1);
if(select1==1)
typedef int MOLD;
else if (select1==2)
typedef float MOLD;
MOLD k;
return 0;
} sunrise085 发表于 2020-9-18 09:29
这是作用域问题。整个switch是一个作用域,所以你那样写就会报错说重定义
而 if 语句块自身是一个作用域, ...
哇,一下子就明白了,谢谢谢谢{:5_109:}
页:
[1]