1.if语句常见的坑
1.1 else悬挂
else始终与最接近它的匹配
所以下面的这个else匹配的是if(isRain)的,并不是isFree的。
if (isFree == 'Y')
if (isRain == 'Y')
printf("记得带伞\n");
else // 我们的这个else是希望是,如果不是free的话,就输出没空,但是
{
printf("没空\n") ;
}
如果想要匹配isFree的if只需要在后面加一个大括号就可。
if (isFree == 'Y')
{
if (isRain == 'Y')
printf("记得带伞\n");
}else // 我们的这个else是希望是,如果不是free的话,就输出没空,但是
{
printf("没空\n") ;
}
1.2==和=号
if(isFree = 'y')
{
。。。
}
else
{
。。。
}
这时就会默认的执行isFree下面的代码块,因为把‘y’赋值给了isFree。不要弄混了。
2. for语句和while语句的坑
首先两个函数并不是完全等价的,两个有不同之处
int main()
{
int i ;
for(i = 0 ; i <= 100 ;i++)
{
if(i % 2 )
{
continue ;
}
return 0 ;
}
}
将上面的代码改成相同的while循环的形式
这样改代码不会报错,但是这个是错误的方法。进入了死循环。
int main()
{
int i = 0 ;
while(i <= 100)
{
i++ ; //更改在这里就可以了
if(i % 2)
{
continue ;
}
//i++ ; 错误的更改方式
}
}
2.1while语句和for语句的区别
区别在于出现continue语句的时候*,while语句会直接跳过while语句后面的语句,进入下一次循环,然后因为i的迭代在continue的后面被跳过了,所以不会改变,一直是那个值,进入死循环。
for语句不会这样,continue会跳到,迭代变量的那里,i++