运算符与优先级
优先级 | 运算符 |
---|---|
1 | ++(后缀),–(后缀),()(调用函数),{}(语句块),.,-> |
2 | ++(前缀),–(前缀),+(前缀),-(前缀),!(前缀),~(前缀),sizeof,*(取指针值),&(取地址),(type)(类型转化) |
3 | *, /, % |
4 | +,- |
5 | << >> |
6 | < > <= >= |
7 | == != |
8 | & |
9 | ^ |
10 | l |
11 | && |
12 | ll |
13 | ? |
14 | =,*=,%=,+=,-=,<<=,>>=,&=, |
15 | ,(逗号运算符) |
条件判断语句:if else
- 单分支
if(条件)
{
//复合语句
}
- 双分支
if(条件)
{
//复合语句1
}
else
{
//复合语句2
}
//如果条件为真,那么执行复合语句1,否则执行复合语句2
- 多重分支
if(条件1)
{
//复合语句1
}
else if(条件2)
{
//复合语句2
}
else if(条件3)
{
//复合语句3
}
else if(条件4)
{
//复合语句4
}
else if(条件5)
{
//复合语句5
}
//当有多个else的时候,else总是和上方最近的那个if语句配对
switch与break,default
switch (i)
{
case 0:
printf("i = 0\n");
break;//跳出switch的复合语句块
case 1:
printf("i = 1\n");
break;
case 2:
printf("i = 2\n");
break;
case 3:
printf("i = 3\n");
break;
case 4:
printf("i = 4\n");
break;
default://如果有所条件都不满足,那么执行default语句
printf("error\n");
}
什么时候用if,什么时候用switch
当条件很复杂,一个条件中有&&,|| ,!存在,那么用if语句
如果条件很简单,但分支很多,那么适合用switch
三目运算符:条件运算符
int i = -8;
int x = (i < 0) ? -i: i;
//先求?左边的条件,如果条件为真,那么等于:左边的值,否则等于:右边的值
goto语句与标号
无条件跳转goto
不建议使用goto语句,goto语句会使你的程序可读性变的很差
void main()
{
int i, j;
for ( i = 0; i < 10; i++ )
{
printf( "Outer loop executing. i = %d\n", i );
for ( j = 0; j < 3; j++ )
{
printf( " Inner loop executing. j = %d\n", j );
if ( i == 5 )
goto stop;
}
}
printf( "Loop exited. i = %d\n", i );
stop:
printf( "Jumped to stop. i = %d\n", i );
}
循环语句与continue,break
continue
循环遇到continue语句,不再执行continue下面代码,而是直接返回到循环起始语句处继续执行循环,也就是跳过当次循环。
break
循环遇到break语句,立刻终端循环,循环结束
while语句
while(条件),如果条件为真,循环继续,条件为假,循环结束
while (1)是死循环的写法
do while语句
do
复合语句
while (条件);
对于do while来讲,循环的复合语句至少可以被执行一次,它是先执行一次再判断
对于while来讲,有可能复合语句一次执行机会都没有,先判断是否满足条件再执行
for循环语句
int i,j;
for(i = 9; i > 0; i--)
{
for(j = 9; j > 0; j--)
{
printf("%d\t", i * j);
}
printf("\n");
}