c++中输入语句直接被跳过解决方案
这是很常见的错误,例如这个代码int n;char a;cin >> n;cout > a;cout > a;
·
大家好,今天在写程序时,偶然发现输入语句直接被跳过了。
我忽地意识到这对与新手来说是很容易犯的错误,那么,我们今天就来总结一下这是为什么
文章目录
输入内容与定义结构不符
这是很常见的错误,例如这个代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
char a;
cin>>n;
cout<<"你好\n";
cin>>a;
cout<<"我是作者\n";
return 0;
}
当你输入整型变量n的时候,如果你输入的是字符,就会出现这样的情况:
这个输出里,n输入的值为字符,于是就直接跳过了字符型变量a的输入,直接输出然后return 0了
所以大家在输入时一定不要输错了变量类型
定义的大小与输入不符
这种情况一般就属于值溢出了,什么意思呢?还是先来看段代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
char a;
int n;
cin>>a;
cout<<"哈喽\n";
cin>>n;
cout<<"我是作者哦\n";
return 0;
}
正常情况下,应当的流程是 输入a–输出"哈喽"–输入n–输出"我是作者哦"
但是呢,现在就成了这样:
输入的AK是字符类的,那么既然类型没有错,为什么也跳过了输入阶段呢?
这就牵扯到很重要的一个东西:值溢出
没有错,字符型变量a的大小是1,但是AK很明显超过了a的大小,所以就直接跳过接下来的输入了
解决方案:将a的大小扩大,例如:
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[100];
int n;
cin>>a;
cout<<"哈喽\n";
cin>>n;
cout<<"我是作者哦\n";
return 0;
}
好了,今天就讲到这里,谢谢大家
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)