首页 > 编程语言 >【C++】关于全局变量和局部变量问题

【C++】关于全局变量和局部变量问题

时间:2023-11-05 19:36:21浏览次数:37  
标签:count std int void 局部变量 C++ 报错 func 全局变量

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void func(void);
 5 
 6 static int count = 10;
 7 
 8 int main() {
 9     while (count--) {
10         func();
11     }
12 
13     return 0;
14 }
15 
16 void func(void) {
17     static int i = 5;
18     i++;
19     cout << i;
20     cout << count;
21 
22 }

上述代码在VS2022中会报错count不明确(count is ambiguous)

如何解决呢,我们可以使用作用域解析运算符" :: "来指明全局命名空间,即:::count 便可以解决上述报错。

还有一个方法,就是去除第二行代码中的命名空间的声明,相应的cout前需要加上“ std:: “。

 

问题产生:声明了命名空间时,会优先查找std中的所有成员,然后再查找全局变量,但是不知道为什么count还是会报错。

标签:count,std,int,void,局部变量,C++,报错,func,全局变量
From: https://www.cnblogs.com/vangoghpeng/p/17810925.html

相关文章

  • ACM竞赛常用算法模板(C++)
    1.快速排序AcWing785.快速排序:https://www.acwing.com/problem/content/787/题目描述给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数n。第二行包含n个整数(所有整数均在1∼10......
  • C++语法——noexcept 关键字
    noexcept问题在数据库项目CMU15445中的Project#2中,有以下一个构造函数的实现:BasicPageGuard(BasicPageGuard&&that)noexcept;这里为什么选择加noexcept?解释关键字noexcept在C++中用来指定一个函数不会抛出异常。在函数声明后使用noexcept表明该函数保证不会......
  • C++11语法——std::move()
    std::move()在C++中,std::move()用于将对象转换为右值引用。关于左值、左值引用、右值、右值引用左值是一个表示数据的表达式(比如变量名或者解引用的指针),程序可以获取其地址传统的C++引用,即是左值引用。C++11新增右值引用,用&&表示。右值是可出现在赋值表达式的右边,但不......
  • SATA基础+更改终端颜色+PCI.ids位置+Linux和Windows的scanf+C语言C++的局部变量与全局
    SATA基础https://zhuanlan.zhihu.com/p/554251608物理信号物理层功能时钟恢复:对于高频传输,一般是采用差分信号传输,并且没有单独的时钟,时钟存在于编码内部串并转换:对于高频传输,串联信号可以做到更高的频率。字节对其:8/10编码转换的10bit对其链路层、传输层链路层和传输......
  • 漫谈 C++:良好的编程习惯与编程要点
    以良好的方式编写C++class假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯。①Header(头文件)中的防卫式声明complex.h:#ifndef__COMPLEX__#define__COMPLEX__classcomplex{}#endif防止头文件的内容被多次包含。②把数据放在priva......
  • C++对象模型
    思考:对于实现平面一个点的参数化。C++的class封装看起来比C的struct更加的复杂,是否意味着产生更多的开销呢?实际上并没有,类的封装不会产生额外的开销,其实,C++中在布局以及存取上的额外开销是virtual引起的。C++对象模式在C++中,有两种classdatamembers:静态成员和非静态成员。有......
  • c++实现排序算法
    排序算法选择排序#include<iostream>#include<cmath>usingnamespacestd;intmain(){ intn,i,j,a[2000]; boolt; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if......
  • Windows系统 C/C++程序编译后首次执行时间很长 断网则正常执行 的解决方法
    Windows系统C/C++程序编译后首次执行时间很长断网则正常执行的解决方法问题描述运行环境:Win10、Win11或其他Win环境。在各类IDE(包括但不限于VC6/VisualStuido等)编译任意C/C++源码(无论该程序有多简单),首次运行时间异常地长,即在黑窗口无任何输出。等待一段时间后有程序正......
  • 引用不可作为局部变量的返回值
    1.概述由于引用实际上是指向被引用变量的一个隐式指针,而局部变量在返回后就会被销毁,我指向的内容被销毁了,这个隐式指针也就成了野指针,导致错误2.实例错误写法以下是我在运算符重载时使用引用作为局部变量返回值导致的问题:Person&operator+(Person&t);{Personp;p.mem_a......
  • C++prime之输入输出文件
    作为一种优秀的语言,C++必然是能操作文件的,但是我们要知道,C++是不直接处理输入输出的,而是通过一族定义在标准库中的类型来处理IO的。‘流’和‘缓冲区’‘流’和‘缓冲区’C++程序把输入输出看作字节流,并且其只检查字节流,不需知道字节来自何方。管理输入包括两步:将流与输入去......