C语言详解 - 表达式和语句

1. 什么是表达式?

C语言中的表达式 一种有值的语法结构,它由运算符将变量、常量、函数调用返回值结合而成。

1.1 变量

变量名本身是一个表达式,表达式的值是变量当前的值。复杂的表达式由[] , -> , . , 和单目运算符*构成。

1.2 常量

常量名本身是一个表达式,字面常量也是表达式。对于这两者,表达式的值是常量当前的值。

1.3 函数调用

对于返回值不为void的函数,对它的正确调用也是表达式。表达式的值为函数的返回值。

1.4 操作符

运算符用于连接表达式中的值。以下是C语言中的运算符,运算符的优先级,及运算符的结合顺序

Order

Category

Operator

Operation

Associativity

1

Highest precedence

( )
[ ]

: :
.

Function call

L → R
Left to Right

2

Unary

!
~
+
-
++
- -
&
*
Size of

Logical negation (NOT)
Bitwise 1’s complement
Unary plus
Unary minus
Pre or post increment
Pre or post decrement
Address
Indirection
Size of operant in bytes

R → L
Right -> Left

3

Member Access

.*
→*

Dereference
Dereference

L → R

4

Multiplication

*
/
%

Multiply
Divide
Modulus

L → R

5

Additive

+
-

Binary Plus
Binary Minus

L → R

6

Shift

<<
>>

Shift Left
Shift Right

L → R

7

Relational

<
<=
>
>=

Less than
Less than or equal to
Greater than
Greater than or equal to

L → R

8

Equality

==
!=

Equal to
Not Equal to

L → R

9

Bitwise AAND

&

Bitwise AND

L → R

10

Bitwise XOR

^

Bitwise XOR

L → R

11

Bitwise OR

|

Bitwise OR

L → R

12

Logical AND

&&

Logical AND

L → R

14

Conditional

? :

Ternary Operator

R → L

15

Assignment

=
*=
%=
/=
+=
-=
&=
^=
|=
<<=
>>=

Assignment
Assign product
Assign reminder
Assign quotient
Assign sum
Assign difference
Assign bitwise AND
Assign bitwise XOR
Assign bitwise OR
Assign left shift
Assign right shift

R → L

16

Comma

,

Evaluate

L → R

 

1.5 实例

/*  变量常量表达式  */
a
sum
1
0.5
PI

/*  算术表达式  */
+  b
-  b  +  c
*  b  +   ' A '
/  b  -  c  +   10
i
++   +  i ++   +   ++ i

/*  赋值表达式  */
=  b
*=  b  +=   20
=  b  =  c  =   10
=  (b = 4 /  (c = 2 )

/*  逗号表达式  */
1 + 2 3 + 4
(
10 , a * 5 ), a + 10

/*  关系表达式  */
==  y
<=  y
!=  y

/*  逻辑表达式  */
10   &&   20
0   ||   1
(a
> b)  &&  ( ! 0 )



/*  复合表达式  */
=  ( y  =  (a  +  b), z = 10 )

/*  表达式的应用  */
if ! 100  )  // !100为逻辑表达式
  printf( " expression show! " );

for ( int  i = 10 ; i < 10 ; i ++ ) // for包含3个表达式,分别为i=10  i<10  i++
  printf( " expression show! " );

while 1  )  // 1也是一个表达式
{
    printf(
" death loop! " );
}

 

2. 语句

语句指的是当程序运行时执行某个动作的语法结构。它改变变量的值,产生输出,或处理输入。C语言包括4类语句:

2.1 表达式语句

表达式语句是最简单的一种语句,在表达式的末尾加分号就形成了一个表达式语句。表达式语句有以下形式:

expression ;

最常用的表达式语句是函数调用语句和赋值语句。函数调用语句也属于表达式语句,因为函数调用(如sin(x) )也属于表达式的一种。赋值语句的作用是将等号左边变量的值改成等号右边表达式的值。赋值语句最常用的形式为:

variable = expression ;

实例:

 

=   10 ;
=   20 ;
*=   10 ;    

1 ;
+  y;  // 这些语句也是合法的。语句被执行时,表达式求值,但结果并不保存于任何地方
getchar();  // 读取输入中的下一个字符,但接着便将其丢弃!

x
++ ;
printf(
" hello /n " );  // printf函数的返回值通常并不关心。所谓语句“没有效果”只是表示表达式的值被忽略。

 

2.2 语句块

可以用{  }将一系列语句括起来使其大功能上相当于一条语句,这就是语句块。语句块中可以有变量声明,声明必须位于块的开始。

 

实例:

 



int  x;
int  y;
=   6 ;

{
    
int  z  =   100 ;
    y 
=  z / x;
    printf(
" %d /n " , y);
}

 

2.3 空语句

即只有一个分号的语句,它什么也不做。当用在循环体中时,表示循环体什么也不做。

 

实例:

// 空语句

for int  i = 0 ; i < 10 ; i ++  )
// 循环体为空

 

2.4 控制语句

控制语句分类3类:循环语句,选择/条件语句,特殊语句

Repetition
While Loops - pretest loops
For Loops - pretest loops
Do-While Loops - posttest loops
/*  While Loops  */
while  (conditional - expression) {
    nested
- statements
}

/*  For Loops  */
for  (initialization; conditional - expression; increment) {
    nested
- statements
}

/*  Do-While Loops  */
do  {
    nested
- statements
while  (conditional - expression);

 

Conditional Execution And Selection
If Statements - conditional execution of a single statement
If-Else Statements - conditional selection among two statements
Switch Statements - conditional selection among several statements
Extended If Statements - conditional selection among several statements
/*  If Statements  */
if  (conditional - expression) {
    then
- clause
}

/*  If-Else Statements  */
if  (conditional - expression) {
    then
- clause

else  {
    
else - clause
}

/*  Switch Statements  */
switch  (control - expression) {
    
case  constant - expression - 1 :
    statements
- 1
        .
        .
        .
    
case  constant - expression - n:
    statements
- n
    
default :
    
default - statements
}

/*  Extended If Statements  */
if  (conditional - expression - 1 ) {
    statements
- 1

else   if  (conditional - expression - 1 ) {
    statements
- 1
    .
    .
    .

else   if  (conditional - expression - n) {
    statements
- n

else  {
    
default - statements
}

 

Special Control Statements
Return Statements - return values from and terminate functions
Continue Statements - skip the remaining statements in an iteration of a loop
Break Statements - exit a loop or switch statement
/*  Return Statements  */
return ;
return  expression;

/*  Continue Statements  */
continue ;

/*  Break Statements  */
break ;

 

 

实例略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值