您的位置:首页 > 编程语言 > C语言/C++

C语言的表达式与语句

2015-08-06 06:04 225 查看
C语言中,表达式是显示如何计算值的公式。变量是表示程序在运行过程中计算出的值,常量表示不变的值,它们是最简单的表达式。一般地,表达式为运算符和操作数的有效组合。C语言包括丰富的运算符组合,包括算术运算符、关系运算符和逻辑运算符等,对应的表达式也被称为算术表达式,关系表达式,逻辑表达式等。函数是被命名的可执行代码块,具有返回值的函数也可以用在表达式中,把其返回值作为构成表达式的操作数。

语句是C语言的关键特性之一,表示程序运行时执行的命令。C语言标准规定语句以
;
结尾,但是对于复合语句,它用大括号
{}
将多条语句包裹起来,强制编译器将其当作一条语句处理,结尾不需要
;


C语言中语句包括以下几种,表达式语句,函数调用语句,复合语句,控制语句和空语句。

表达式语句。由表达式添加分号
;
构成表达式语句。执行完表达式语句后,表达式的值会被丢弃,因此,若表达式不修改操作数的值,表达式语句就没有什么实际意义。对于无意义的表达式语句,使用gcc编译器时,设置-Wall选项,就可以
statement with no effect
的警告。一个表达式可以划分为多个子表达式,但是C语言并没有规定子表达式的执行顺序,例如
(a+b)*(c+d)
这样的式子就无法保证
a+b
是在
c+d
之前执行的,因此表达式的值不应依赖于子表达式的执行顺序,否则会出现在编译器间的不兼容问题。

/***************************************
* expression.c                        *
*                                     *
* C语言中的表达式和表达式语句             *
***************************************/

int Sum(int a, int b)
{
return a + b;
}

int main()
{
int a =0;

a;  /*变量表达式*/
1;  /*常量表达式*/
a + 1; /*算术表达式*/
int b = 0;
b = a; /*赋值表达式*/
a == b; /*关系表达式*/

a && b; /*逻辑表达式*/

a = Sum(a, b); /*函数返回值为赋值表达式的操作数*/
return 0;
}




函数调用语句。由函数调用后添加分号构成,一般形式为
函数名(实际参数表);
。执行函数调用语句,就是为函数传入实际参数,执行函数中的语句,并根据需要返回值的过程。函数调用语句的返回值也会被丢弃。

/*************************************
* function_call.c                   *
*                                   *
* 函数调用语句                      *
*************************************/
#include <stdio.h>

int Sum(int a, int b)
{
return a + b;
}

int main()
{
int a = 1;
int b = 2;
/*调用自定义函数,未用返回值*/
Sum(a, b);
/*调用库函数*/
printf("a = %d, b = %d\n", a, b);
return 0;
}




复合语句。复合语句由大括号包裹多条语句,强制编译器将其当作单独一条指令处理,常出现在选择、循环和其他需要执行多条语句但C语言语法却要求单独一条语句的地方。

/*************************************
* compount_statement.c              *
*                                   *
* C语言中的复合语句                 *
*************************************/
#include <stdio.h>

int main()
{
int a = 5;
int b = 3;

//复合语句
{
int temp = a;
a = b;
b = temp;
}

printf("a = %d, b = %d\n", a, b);

return 0;
}




控制语句。用于控制程序结构,支持选择、循环等结构方式,包括三类共九种:

条件判断语句(
if
语句,
switch
语句)

循环执行语句(
do while
语句,
while
语句,
for
语句)

转向语句(
break
语句,
goto
语句,
continue
语句,
return
语句)

/**************************************
* using_control_statement.c          *
*                                    *
* C语言中的控制语句                  *
**************************************/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
start:
printf("Are you going to play a game? \nEnter 1 as Yes and 0 as No!\n");
short selection = 0;
scanf("%hd", &selection);

/*switch 语句,根据输入值分0,1和其他分别处理*/
switch (selection)
{
case 0:
return 0;
case 1:
break;
default:
printf("Wrong input!\n");
return 0;
}

srand((unsigned)time(NULL));
int goal = rand() % 100;

int guess = 0;
/*while语句*/
while (1)
{
printf("Guess which number in my hand. Enter -1 if you want to stop the game.\nPlease enter your guess: ");
scanf("%d", &guess);

if (guess == -1)
break;

/* if语句,判断条件根据结构进行处理*/
if (guess > goal)
{
printf("Sorry, Your guess is bigger than my number!\n");
}else if (guess < goal)
{
printf("Sorry, Your guess is smaller than my number!\n");
}else
{
printf("Congratulations! You win!\n Enter -2 if you want to play again!");
short isContinued = 0;
scanf("%hd", &isContinued);
if (isContinued == -2)
goto start;
else
break;
}
}

return 0;
}




- 空语句。只有分号组成的语句,什么也不执行。

/***********************************
* empty_statement.c               *
*                                 *
* C语言中的空语句                 *
***********************************/

int main()
{
int i = 0;
for (; i < 20; i++)
{
/*空语句*/
;
}
return 0;
}




参考文献

K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社

http://www.cnblogs.com/JCSU/articles/1303491.html

http://baike.baidu.com/link?url=LuAbEZGVl2koSfWE2vEG0VDBNCrWHgCkmHZuxaEzSonXnh3PsJQ0SCpqDYKBgVttAmxiq4aPy3wozSTqO2P-C_
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: