mengxiang_tianji 2016-03-27 06:34 采纳率: 40%
浏览 1692

C++变量作用域匹配以及inline函数问题

int value = 2;
void printvalue()
{
printf("value=%d\n", value);
}
int main()
{
int value = 0;
value = 1;
cout << value << endl;
//::value = 2;
printvalue();
return 0;
}
为什么函数中的输出为value=2,value匹配了全局变量而不是局部变量?而将printvalue改为含有一个参数的函数,传入变量value则匹配局部变量?:
void printvalue(int vaule)
{
printf("value=%d\n", value);
}
int main()
{
int value = 0;
value = 1;
printvalue(value);
return 0;
}
inline函数在编译的时候会自动展开,为什么下面的两个输出却不一样?
void printvalue()
{
printf("value=%d\n", value);
}
int main()
{
int value = 0;
value = 1;
printf("value=%d\n", value);
return 0;
}

inline void printvalue()
{
printf("value=%d\n", value);
}
int main()
{
int value = 0;
value = 1;
printvalue();
return 0;
}

  • 写回答

2条回答 默认 最新

  • huatian5 2016-03-27 06:48
    关注

    变量要看就近性,你那个全局变量和局部变量的范围是不一样的又没有传参数。如果给函数传参了,就看参数的范围。
    还有你的代码中没有inline函数啊/

    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图