c++中输入语句直接被跳过解决方案

大家好,今天在写程序时,偶然发现输入语句直接被跳过了。
我忽地意识到这对与新手来说是很容易犯的错误,那么,我们今天就来总结一下这是为什么

输入内容与定义结构不符

这是很常见的错误,例如这个代码

#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;
	}

好了,今天就讲到这里,谢谢大家

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值