一、运算符
二、流程控制
switch (c)
{
case '+':
int sum = a+b;
printf("和是%d\n",sum);
break;
case '-':
int minus = a - b;
printf("差是%d\n", minus);
break;
}
此处的错误和4中a的作用域不明确差不多。编译器只看{},但是有条件判断,产生矛盾。解决办法:
case ‘+’ :
{
int sum = a+b;
printf("和是%d\n",sum);
break;
}
如果要在case后面定义新的变量,必须用{}包住。
int main()
{
int count = 50;
while(count < 50)
{
++count;
/*
if(count%10!=0)
{
printf("第%d次做俯卧\n",count);
}
*/
/*
if(count%10==0)
{
//结束本次,进入下一次循环体判断执行
continue;
}
printf("第%d次做俯卧撑\n",count);
*/
if(count%10==0)
{
//跳出结束循环
break;
}
printf("第%d次做俯卧撑\n",count); }
return 0;
}
int n;
scanf("%d", &n );
while(n<=0)
{
printf("请输入一个正整数:");
scanf("%d", &n );
}
6、有时程序刻意制造死循环。
7、for循环中的性能问题,如下程序:
{
int count = 0;
for(; count < 50;)
{
printf("做俯卧撑\n");
count++;
}
//对比上面的写法,这种写法性能更高,因为count变量只 在for循环中使用。count只能用在for循环中,for结束,count释放。
for(int count = 0; count < 50;count++)
{
printf("做俯卧撑\n");
}
//printf(“%d\n”,count);提示错误因为count已释放
for(int count = 0; count <50;printf("做俯卧\n"),printf("哈哈\n”),count++)
{
}
//printf("做俯卧撑\n"),printf("哈哈\n");为逗号表达式,从左到右顺序执行。
}
8、for循环使用注意:
// 错,int a作用域不明确
for(int i = 0; i <5;i++)
int a =10;
// 正确
for(int i = 0; i <5;i++)
{
int a =10;
}
for(int i = 0; i <5;i++)
{
int i =10
printf("i=%d\n",i ); //输出结果为一直为10,就近原则。
}
for(int i = 0; i <5;i++)
{
//int i =10
printf("i=%d\n",i ); //输出结果为0,1,2,3,4
}
// 错,a释放,只能用在循环体中,所以导致语句2错误。
for(int i = 0; i <5;i++,a++)
{
int a =10
}
int a = 10;
for(int i = 0; i <5;i++)
{
//int i =10
printf("a=%d\n",a ); //输出结果a为10
}
//
int a = 10;
for(int i = 0, a=9; i <5;i++)
{
//int i =10
printf("a=%d\n",a ); //输出结果为9
}
//
int a = 10;
for(int i = 0, a=9; i <5;i++)
{
int a =10
//输出结果将会一直为10,就近原则,由内向外找定义变量a
printf("a=%d\n",a );
}
9、break 和 continue
continue 跳出本次循环,进入下次循环
break 跳出整个循环
//
//
for(int i=0;i<2;i++)
{
for(int j=0 ;j<3;j++)
{
if(j==1)
{
//continue; // 跳出本次内循环,就近原则
break; //跳出内循环,就近原则
}
printf("A\n");
}
break; // 跳出外循环,就近原则
printf("B\n");
}