1.变量名错误
变量名不能使用关键字
int char; //编译失败
变量名不能和函数名同名
int system; //会导致后面不能使用system函数
2.变量还没有定义,就直接使用
age = 20;
变量一定要先定义,再使用。
3.变量的输入与使用顺序不当
//以下为错误代码
#include<iostream> #include<Windows.h> using namespace std; int main(void){ int age; int num; num = age * 360; cout << "请输入您的年龄: "; cin >> age; cout << "这是您在地球的" << num <<"天" << endl; system("pause"); return 0; }
num = age * 360;
计算完字符,num和age没有任何关系!
而不是数学中的理解: num永远是age的360倍【不适用于C、C++】
4.数据输入时,数据的类型不匹配
#include<iostream> #include<Windows.h> using namespace std; int main(void){ int age; int num; cout << "请输入您的年龄: "; cin >> age; num = age * 360; cout << "这是您在地球的" << num <<"天" << endl; system("pause"); return 0; }
输入的是字母l和0
类型不匹配,此时输入失败,变量的值还是原来的值
说明:
变量如果不做初始化,它的值是不确定的。
良好的编程习惯:变量在定义时,进行初始化:
int age = 0;
5.输入数据时,前面的数据输入错误,导致后面的数据都不能输入
#include <iostream> #include <Windows.h> #include <string> int main(void) { int a; int b; int c; std::cin >> a >> b >> c; std::cout << "a=" << a << std::endl; std::cout << "b=" << b << std::endl; std::cout << "c=" << c << std::endl; system("pause"); return 0; }
解决方案:
#include <iostream> #include <Windows.h> #include <string> using namespace std; int main(void) { int a; int b; int c; //std::cin >> a >> b >> c; std::cout << "请输入a: "; std::cin >> a; if (cin.fail()) { //检查输入时是否发生了错误 cout << "输入错误,应该输入一个整数" << endl; //清除错误标记,使得后续输入可以正常进行 //但是已经输入的数据还在输入缓冲区 cin.clear(); cin.sync(); //清空输入缓冲区 } std::cout << "请输入b: "; std::cin >> b; if (cin.fail()) { cout << "输入错误,应该输入一个整数" << endl; cin.clear(); //清除错误标记,使得后续输入可以正常进行 cin.sync(); //清空输入缓冲区 } std::cout << "请输入c: "; std::cin >> c; if (cin.fail()) { cout << "输入错误,应该输入一个整数" << endl; cin.clear(); //清除错误标记,使得后续输入可以正常进行 cin.sync();//清空输入缓冲区 } std::cout << "a=" << a << std::endl; std::cout << "b=" << b << std::endl; std::cout << "c=" << c << std::endl; system("pause"); return 0; }