一、C语言运算符优先级顺序
一共有十五个优先级:
1 () [] . ->
2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof
3 * / %
4 + -
5 >> <<
6 > >= < <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= |= ^= &= >>= <<=
15 ,
括号成员第一; //括号运算符[]()成员运算符. ->
全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&
乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >>,关系:> < >= <=等
等于(与)不等排第七; //即==和!=
位与异或和位或; //这几个都是位运算:位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:||和 &&
十二和十一; //注意顺序:优先级(||) 底于优先级(&&)
条件高于赋值, //三目运算符优先级排到13位只比赋值运算符和","高
逗号运算级最低! //逗号运算符优先级最低
在C语言中有以下关系运算符:
1) < 小于
2) <= 小于或等于
3) > 大于
4) >= 大于或等于
5) == 等于
6) != 不等于
关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,前四个<,<=,>,>=的优先级相同,高于==和!=,==和!=的优先级相同
二、4种运算
1、if语句
如
if(表达式1)
if(表达式2)
语句1;
else
语句2;
如上else与哪个配对呢?就近原则。。。。
2、条件去处符和条件表达式
条件运算符为“?和:”,它是一个三目运算符,即有三个参与运算的量。
由条件运算符组成条件表达式的一般形式:
表达式1?表达式2:表达式3
求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否由以表达式3的值作为整个条件表达式的值
ma = (a>b) ? a : b
如果a>b为真把a的值赋值给ma如果a>b为假把b的值赋值给ma
注意:
1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此,ma=(a>b)?a:b可以去掉括号而写为 ma=a>b?a:b
2)条件运算符 ?和:是一对运算符,不能分开单独使用
3)条件运算符的结合方向是自右至左如:a>b?a:c>d?c:d应理解为 a>b?a:(c>d?c:d)
上面也是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式
3、for语句
for(表达式1循环变量赋初值;表达式2循环条件;表达式3循环变量增量) 语句
例
for ( i = 1; i <= 100; i++ )
{
sum = sum+1;
}
先给i赋初值1,判断i是否小于等于100,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>100时,结束循环。
注意:
1)for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺省但“;”不能缺省
2)省略了“表达式1(循环变量赋初值)”表示不对循环控制变量赋初值。
3)省略了“表达式2(循环条件)”,则不做其它处理时便成为死循环
例如:
for ( i =1; ;i++)
{
sum=sum+i;
}
4)省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变语句。
for ( i =1; i <= 100;)
{
sum=sum+1;
i++;
}
5)省略了“表达式1(循环变量赋安值)”和“表达式3(循环变量增量)”
for ( ; i <= 100; )
{
sum=sum+1;
i++;
}
6)3个表达式都可以省略
for ( ; ; ) 语句
相当于
while(1)语句 死循环
7)表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。也可以是逗号表达式
int i,j,k;
for ( i = 0,j = 100; i <= 100; i++,j-- )
{
k=i+j;;
}
9)表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。
for ( i = 0; (c = getchar()) != '\n'; i+=c);
调试见转载文章
break和continue语句
break只用循环语句和switch语句
在多层循环中一个break语句只向外跳一层
continue是结束本次循环后再进行判断。。break是跳出整个循环。。