何止喜欢 发表于 2020-9-18 09:04:14

switch和if问题

为啥注释的if语句可以执行,但是switch不能执行,执行switch时编译器说MOLD重定义

sunrise085 发表于 2020-9-18 09:29:20

本帖最后由 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;
}

何止喜欢 发表于 2020-9-18 09:54:30

sunrise085 发表于 2020-9-18 09:29
这是作用域问题。整个switch是一个作用域,所以你那样写就会报错说重定义
而 if 语句块自身是一个作用域, ...

哇,一下子就明白了,谢谢谢谢{:5_109:}
页: [1]
查看完整版本: switch和if问题