C++中使用cin作为变量名的程序输出结果及原理疑问
C++题目逻辑解析
原题代码
#include<iostream> using namespace std; int main () { int cin; cin >> cin; cout << "cin" << cin; return 0; }
选项&结论
正确答案为 (B) cin+垃圾值
运行逻辑拆解
cin不是C++语法关键字,它是标准库<iostream>中定义在std命名空间下的输入流对象,因此声明名为cin的局部整型变量完全符合语法规则,不会触发编译报错,直接排除选项A。- 代码中
using namespace std;会将std::cin引入全局作用域,但main函数内部声明的局部变量优先级更高,会遮蔽全局的输入流对象,后续所有直接写cin的位置都指代这个局部int变量,和标准输入流没有任何关系。 - 语句
cin >> cin实际执行的是整型的右移运算,而非输入操作:作为自动存储类型的局部int变量未做初始化,本身值就是不确定的垃圾值,两个垃圾值执行右移操作后的结果仍然是垃圾值,整个过程不会触发读取用户输入的逻辑,因此不会获得输入值,排除选项C。 - 后续输出语句
cout << "cin" << cin;会先输出固定字符串"cin",再输出该局部int变量的垃圾值,整个流程既没有语法错误也不会触发运行时异常,排除选项D。
内容的提问来源于stack exchange,提问作者newprogrammer
相关产品推荐
相关产品推荐

