变量名能和函数名相同吗?

时间:2023-01-11 22:25:08
c/c++变量名能和函数名相同吗?why?
double fac(int n)
{
     int i=1;
     double fac=1;
     for(i=1;i<=n;++i)
     {   
          fac=fac*i;
     }
     return(fac);
}

int main()
{
    int n;
    double fac;
    scanf("%d",&n);
    fac=fac(n);
    printf("%.3f",fac);
    return 0;
}

9 个解决方案

#1


让编译器告诉你不是更好

#2


why?

#3


我找到答案了。

全局变量名和函数名不能相同。此外,若局部变量名与全局变量名或函数名相同,则在该局部变量作用范围内不能使用相应的全局变量或函数。 

#4


此时编译器无法把fac(n)推演成一个函数调用

#5


全局变量名和函数名不能相同。此外,若局部变量名与全局变量名或函数名相同,则在该局部变量作用范围内不能使用相应的全局变量或函数。 
--------------------------------------------
也就是在同一个作用域范围内不能引入两个相同的名字,因为会引起解析冲突。

若局部变量名与全局变量名或函数名相同,则在该局部变量作用范围内,也不是不能使用对应的全局量,可以用block

比如 int i = 0;
int main()
{
     int i;
 
     // 此处只有local 的i可见

     // open a new block
     {
          // 此处则只有全局的i 可见
     }
}

#6


#7


不太清楚,不过最好不要同名了.

#8


写代码的可贵之处就是规范性,老老实实的写代码,对你而言是没有坏处的。

过多的去抠语法,吃亏的肯定是你自己,大部分编译器并不是全部支持 C 的全部语法的。

刚开始写代码应该在健壮性、可读性、效率上苦下功夫,很多东西自然而然就能体会。

慢慢的你所关注的就不再是这些琐碎的语法,而是整体的架构。这是一个质的提高。

这是别人告诉俺的,不过不幸的是俺还是处在初级阶段,遗憾!!!

#9


可以相同,在编译器填写符号table的时候,类型写的变量
函数以区分

#1


让编译器告诉你不是更好

#2


why?

#3


我找到答案了。

全局变量名和函数名不能相同。此外,若局部变量名与全局变量名或函数名相同,则在该局部变量作用范围内不能使用相应的全局变量或函数。 

#4


此时编译器无法把fac(n)推演成一个函数调用

#5


全局变量名和函数名不能相同。此外,若局部变量名与全局变量名或函数名相同,则在该局部变量作用范围内不能使用相应的全局变量或函数。 
--------------------------------------------
也就是在同一个作用域范围内不能引入两个相同的名字,因为会引起解析冲突。

若局部变量名与全局变量名或函数名相同,则在该局部变量作用范围内,也不是不能使用对应的全局量,可以用block

比如 int i = 0;
int main()
{
     int i;
 
     // 此处只有local 的i可见

     // open a new block
     {
          // 此处则只有全局的i 可见
     }
}

#6


#7


不太清楚,不过最好不要同名了.

#8


写代码的可贵之处就是规范性,老老实实的写代码,对你而言是没有坏处的。

过多的去抠语法,吃亏的肯定是你自己,大部分编译器并不是全部支持 C 的全部语法的。

刚开始写代码应该在健壮性、可读性、效率上苦下功夫,很多东西自然而然就能体会。

慢慢的你所关注的就不再是这些琐碎的语法,而是整体的架构。这是一个质的提高。

这是别人告诉俺的,不过不幸的是俺还是处在初级阶段,遗憾!!!

#9


可以相同,在编译器填写符号table的时候,类型写的变量
函数以区分