作为一个初学者来说,看到for,while,do_while,if,break等语句可能会觉得头晕脑眩,但当你学完你可能又会觉得自己行了,殊不知自己还太年轻,以下是我的一些关于上述语句的一些总结
1.不建议多个关系操作符连用。以下是代码案例
乍一看代码没问题,但当你输入3 3 3的时候,结果返回为Isosceles triangle!,自己想咋不是Ordinary triangle!呢,a ==b== c;,看看这个代码,这可不是你以为的数学语言,第一个式子a==b,如果为真那结果返回为1,反之,为假返回0,接着再拿返回结果和c判断是否相等;如果到这里还没想明白,那就是你上课没好好听,关键是关系表达式会返回值:0或1,而不是数学上的理解。
2.一个好习惯:变量和常量在使用操作符比较时,建议把常量写右边,变量写左边。否则可能你的分支循环会出现意料之外的结果,甚至你可能都发现不了错误点,但代码却能正常执行。举一个最简单的例子
int main()
{
int a = 3;
if (a = 5)
{
printf("hehe\n");
}
return 0;
}
也许在这里你一看就发现了错误,a=5,这是赋值不是判断,因为这是单拿出来给你看,但是当你的代码长度变长了呢,你觉得你还能一眼就看出来了吗,但是当我们去把常量写在左边的时候,一般就会主动报错,这可比你去查找错误高校多了。
3.关于goto语句的使用,慎用,否则你的代码可能会程序混乱到你自己都没办法
4.brerk和continue语句区别,break跳出的是整个循环,可以让循环直接罢工,而continue是停止当前循环continue后的代码,循环并没有完全罢工,还可以进行下一次循环。假设一个循环要循环5次,如果你在循环到第三次的时候就执行到了break语句,那么也不会执行后面的2次循环,但continue语句则是会仅仅跳过当前循环continue后的代码,还是会进行后面的2次循环
5.for循环:你可以省略变量的初始化,也就可以省略变量调整,但是你不能省略变量的条件判断,除非你想要的结果是死循环
6.switch语句是一个分支语句,不是循环,还有其中的case和default顺序问题,但是他们根本不用讨论顺序,因为switch是根据表达式的内容来选择case子句。其次,表达式的值类型必须是整型,case后跟的值必须是整型常量表达式,这里值得提醒的是enum本质上也是整型
7.for循环的嵌套可以解决很多类似的图形问题,可以多多练习
8.break语句只能跳出一层循环,如果遇到多层循环可以采用goto语句,所以goto语句也不是一无是处
9.关于”;“分号的使用,切记在for()后加上;,否则你会发现你的变量直接变成了循环完的值,那是因为你在for()直接加;相当于
for()
;(空语句)
这不就是执行空语句吗
10.switch语句如果没有在case子句后加上break语句,是实现不了if语句的效果的,他会一直遍历下去,除非遇到了break;,或是到了末尾