c++实时变量的作用域
2015-03-27 13:51
246 查看
c++中我们经常定义实时变量,如:
这里就定义了一个实时变量i,作用域为整个for循环
那么这么一段代码呢:
这段代码也定义了一个实时变量c,咋一看这段代码是没有问题的
但是在编译器中是会报错的
原因是什么呢??
这一句定义了一个实时变量c,而这个变量的作用域只在括号呢,当这个括号内运算完毕后,变量c便无效了~
再与'q'进行比较,因此编译器肯定会报错咯~~
这种情况下就不会出错:
但由于!= 的优先级比 = 高
于是先进行cin.get() != 'q'的比较,然后将比较后的结果由bool型转为char型赋给c
所以若输入不为q时,c的值会为笑脸
以下是正确且符合要求的代码:
for(int i = 0; i < 10; i++) { //.... }
这里就定义了一个实时变量i,作用域为整个for循环
那么这么一段代码呢:
while((char c = cin.get()) != 'q') { //..... }
这段代码也定义了一个实时变量c,咋一看这段代码是没有问题的
但是在编译器中是会报错的
原因是什么呢??
(char c = cin.get())
这一句定义了一个实时变量c,而这个变量的作用域只在括号呢,当这个括号内运算完毕后,变量c便无效了~
再与'q'进行比较,因此编译器肯定会报错咯~~
这种情况下就不会出错:
while(char c = cin.get() != 'q') { //....... }这样的话c的作用域就是整个while循环
但由于!= 的优先级比 = 高
于是先进行cin.get() != 'q'的比较,然后将比较后的结果由bool型转为char型赋给c
所以若输入不为q时,c的值会为笑脸
以下是正确且符合要求的代码:
#include <iostream> #include <cstdlib> using namespace std; int main(void) { char c; while( (c = cin.get()) != 'q') { cout << c; } system("pause"); }
相关文章推荐
- c++总结(1)-变量作用域及extern使用以及头文件预编
- C++中变量的作用域与生命周期
- C++变量作用域
- C++中变量的作用域与生命周期
- C/C++的变量,类的作用域
- c++基础:const,变量的作用域和生存期,存储类型
- C++拷贝函数的小结,关于变量的作用域等---ShinePans
- c++中static 全局变量,const全局变量的作用域
- C语言中的static变量 和 C++中static变量—生成期、作用域、访问约束、对谁可见等
- 【C++】变量(五) 变量名的作用域以及变量定义的一些习惯
- C++ 变量作用域
- c++中变量的作用域
- The New C++ -- 变量 (6. 变量名的声明点和作用域)
- C/C++中的变量作用域
- C++中变量的作用域与生命周期
- [C++] 变量存储区域及其作用域【转】
- C++的变量作用域
- 0923_C/C++笔试题_7:c语言一题,变量作用域
- C++中变量的存储位置及其作用域
- C++中全局变量与局部变量作用域问题