C语言的表达式与语句
2015-08-06 06:04
225 查看
C语言中,表达式是显示如何计算值的公式。变量是表示程序在运行过程中计算出的值,常量表示不变的值,它们是最简单的表达式。一般地,表达式为运算符和操作数的有效组合。C语言包括丰富的运算符组合,包括算术运算符、关系运算符和逻辑运算符等,对应的表达式也被称为算术表达式,关系表达式,逻辑表达式等。函数是被命名的可执行代码块,具有返回值的函数也可以用在表达式中,把其返回值作为构成表达式的操作数。
语句是C语言的关键特性之一,表示程序运行时执行的命令。C语言标准规定语句以
C语言中语句包括以下几种,表达式语句,函数调用语句,复合语句,控制语句和空语句。
表达式语句。由表达式添加分号
![](http://img.blog.csdn.net/20150806090851207)
函数调用语句。由函数调用后添加分号构成,一般形式为
![](http://img.blog.csdn.net/20150806091837325)
复合语句。复合语句由大括号包裹多条语句,强制编译器将其当作单独一条指令处理,常出现在选择、循环和其他需要执行多条语句但C语言语法却要求单独一条语句的地方。
![](http://img.blog.csdn.net/20150806092832446)
控制语句。用于控制程序结构,支持选择、循环等结构方式,包括三类共九种:
条件判断语句(
循环执行语句(
转向语句(
![](http://img.blog.csdn.net/20150806111406317)
- 空语句。只有分号组成的语句,什么也不执行。
![](http://img.blog.csdn.net/20150806112706748)
http://www.cnblogs.com/JCSU/articles/1303491.html
http://baike.baidu.com/link?url=LuAbEZGVl2koSfWE2vEG0VDBNCrWHgCkmHZuxaEzSonXnh3PsJQ0SCpqDYKBgVttAmxiq4aPy3wozSTqO2P-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_
相关文章推荐
- C++ 中输入输出细节
- C++入门问题
- C++ 中输出精度问题
- 黑马程序员——ios学习笔记 C语言 指针的应用
- 黑马程序员---c语言基础---数组、指针
- C++ inline函数
- C++ Primer Plus第六版 第八章 编程练习答案
- 初学图论-Bellman-Ford单源最短路径算法
- 初学图论-DAG单源最短路径算法
- C/C++二进制读写===
- 真想用c#开发个 wp五笔输入法。。。奈何网上资料太少,源码都是c++写的。求大神指点!!!
- C语言变量类型
- 标准C/C++字符串和数字的转化
- 设计模式之装饰者模式C++实现
- C++指针数组和指向指针的指针
- 设计模式之策略模式的C++实现
- C语言中谁不认识指针?
- 小白初学C++ PRIMER 第五版 第一章
- error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
- error C4430: missing type specifier - int assumed. Note: C++ does not support default-int