博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言详解 - 表达式和语句
阅读量:6633 次
发布时间:2019-06-25

本文共 4351 字,大约阅读时间需要 14 分钟。

本文转载

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
/*  算术表达式  */
a  +  b
a  -  b  +  c
a  *  b  +   ' A '
a  /  b  -  c  +   10
i ++   +  i ++   +   ++ i
/*  赋值表达式  */
a  =  b
a  *=  b  +=   20
a  =  b  =  c  =   10
a  =  (b = 4 )  /  (c = 2 )
/*  逗号表达式  */
1 + 2 ,  3 + 4
( 10 , a * 5 ), a + 10
/*  关系表达式  */
x  ==  y
x  <=  y
x  !=  y
/*  逻辑表达式  */
10   &&   20
0   ||   1
(a > b)  &&  ( ! 0 )
/*  复合表达式  */
x  =  ( 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;

实例:

 

x  =   10 ;
y  =   20 ;
x  *=   10 ;    
1 ;
x  +  y;  // 这些语句也是合法的。语句被执行时,表达式求值,但结果并不保存于任何地方
getchar();  // 读取输入中的下一个字符,但接着便将其丢弃!
x ++ ;
printf( " hello \n " );  // printf函数的返回值通常并不关心。所谓语句“没有效果”只是表示表达式的值被忽略。

 

2.2 语句块

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

 

 

实例:

 

int  x;
int  y;
x  =   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 ;

 

 

 

实例略

转载于:https://www.cnblogs.com/alaigle/archive/2012/04/27/2473687.html

你可能感兴趣的文章
CentOS6.5安装Kibana5.3.0
查看>>
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
查看>>
EM算法求高斯混合模型參数预计——Python实现
查看>>
JS 得细心的坑位
查看>>
hdu1874 畅通project续(求最短路径)
查看>>
ArcGIS教程:Geostatistical Analyst 应用演示样例
查看>>
winform网络编程之TcpClient类,TcpListener类和UdpClient类
查看>>
CentOS7下的YUM源服务器搭建详解,过程写的很详细(转)
查看>>
AspNetCore-MVC实战系列(三)之个人中心
查看>>
JSON简述
查看>>
cvs的规范以及介绍(转)
查看>>
Makefile中用宏定义进行条件编译(gcc -D)/在Makefile中进行宏定义-D【转】
查看>>
linux ls 命令
查看>>
Win10 IoT C#开发 4 - UART 串口通信
查看>>
UWP入门(一) -- 先写几个简单控件简单熟悉下(别看这个)
查看>>
Spring+CXF整合来管理webservice(服务器启动发布webservice)
查看>>
【Android】如何获取本机号码、IMSI、EMSI
查看>>
【解决 macos Sierra 系统「安全性与隐私」设置中没有任何来源选项问题】
查看>>
树莓派:文本编辑器与文件
查看>>
Ubuntu网络配置
查看>>