char x='Y';while(x='Y'){//...cout<<"是否继续? (Y/N)";cin>>x;}
使用==检查是否相等;
为了避免意外赋值,将变量放在表达式的右侧,如果不小心使用了一个等号,就会出现编译错误,因为不能将值赋给非变量的东西。
char x='Y';while('Y'==x){//...cout<<"是否继续? (Y/N)";cin>>x;}
#include <iostream>using namespace std;int main(){int a, b;int sum=a+b;cout<<"input two numbers to add: ";cin>>a;cin>>b;cout<<"The sum is: "<<sum;return 0;}

#include <iostream>using namespace std;int main(){cin>>x;cout<<x;return 0;}
#include <iostream>using namespace std;int main(){int x=0;cin>>x;cout<<x;return 0;}
#include <iostream>using namespace std;int main(){int count;while(count<100){cout<<count<<";";count++;}return 0;}
int main(){add();}void add(){//...}
编译时会报错,明明后面有定义了add函数,为什么还说没有定义add~
在编译代码时,编译器不知道add()代表什么,除非提前告诉它,如果在使用它之后才告诉它有一个名为add的函数,它将会感到困惑。因此一定要在第一次使用函数时,就定义好函数的原型或函数的整个定义。如:
void add(){//...}int main(){add();}
6 多余的分号
这种问题大多出现在for循环中,如:
#include <iostream>using namespace std;int main(){int x;for(x=0; x<100; x++);cout<<x;return 0;}
上面的代码期望是输出0到99的数值,但是实际运行后输出的是:100;原因是在for语句后面多打了一个分号。这样就会将代码原有逻辑改变。因此在编程时切记:分号不能出现在if语句、循环或函数定义之后。如果您在这些位置中放置了一个,您的程序将无法正常运行。
7 数组边界溢出
#include <iostream>using namespace std;int main(){int array[10];for(int x=1; x<=10; x++)cout<<array[x];return 0;}
在C++中数组索引从0开始。例如,如果你有一个10个元素的数组,第一个元素在位置0,最后一个元素在位置9。
int array[10];for(int x=1; x<10; x++)cout<<array[x];
上面的代码中还有其它问题,如数组没有进行初始化,这样在输出时,打印出的值实际上是随机值。
8 错误使用“&&”和“||”
#include <iostream>using namespace std;int main(){int value;do{//...value=10;}while(!(value==10) || !(value==20));return 0;}
代码实现的本意应该是当value等于10或者value等于20的时候,就结束循环。但是实际运行时发现,即使value等于10,也会一直执行这个循环语句。从while表达式分析可知。不可能同时存在value既等于10又等于20的情况。如果要满足上面循环的结束条件,需要将表达式修改成:!(value==10) && !(value==20)或者!((value==10) || (value==20))才能满足退出条件。如果对这个条件有疑问的话大家可以自行在复习下离散数学。
参考:
1、https://www.cprogramming.com/tutorial/common.html
- EOF -


扫码关注
图文:龙小
排版:龙小
点赞和在看就是最大的支持❤️




