C语言学习笔记3--运算符优先级 4种运算

一、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是跳出整个循环。。

你可能感兴趣的:(C学习笔记)