C语言学习篇-5表达式与语句
2016-06-01 12:12
671 查看
说明:控制语句在程序中起到对程序流程的控制作用。
表达式类型
变量常量表达式:a; sum; max; 1; 10;
算术表达式:a + b; a - b; i ++; i –;
赋值表达式:x = y; a *= b; c = (a - 10) + (b + 15);
逗号表达式:int a = 10, b = 15, c = 25;
关系表达式:x < y; x == y; x != y;
逻辑表达式:a && b; a || b; !a;
复合表达式:y = (x = (a - b * c)) + z;
表达式中的类型转换:混合于同一表达式中的不同类型常量及变量,应均变换为同一类型的量。C语言的编译程序将所有操作数变换为与最大类型操作数同类型。变换以一次一操作的方式进行。具体规则如下:
所有char及short int型量转为int型,所有float转换为double。
如果操作数对中一个为long double,则另一个转换为long double。
①否则,一个为double,另一个转为double。
②否则,一个为long,另一个转为long。
③否则,一个为unsigned,另一个转为unsigned。
一旦运用以上规则。每一对操作数均变为同类型。
注意,规则2有几种必须依次应用的条件。图2-1示出了类型转换。首先,charch转换成int,且floatf转换成double;然后ch/i的结果转换成double,因为f*d是double;最后由于这次两个操作数都是double,所以结果也是double。
格式:(type)expression(type1)
这是标准C语言中的一个数据类型。例如,为确保表达式x/2的结果具有类型float,可写为:
(float)x/2,通常认为cast是操作符。作为操作符,cast是一元的,并且同其它一元操作符优先级相同。虽然cast在程序中用得不多,但有时它的使用的确很有价值。
例如,假设希望用一整数控制循环,但在执行计算时又要有小数部分。
执行结果:
若没有cast(float),就执行整除运算,结果为整数;有了cast就可保证结果为小数。
常见格式:
expression;
variable = expression;
最常用的表达式语句是函数调用语句和赋值语句。
函数调用语句也属于表达式语句,因为函数调用(如sin(x) )也属于表达式的一种。
赋值语句的作用是将等号左边变量的值改成等号右边表达式的值。
示例:求三个数中最大值
示例:
示例:
分支语句
循环语句
转向语句
示例:a = a + 15; 可以简写为a += 15;编译的时候+=操作符会通知编译程序将a+15的值赋值给a本身。这种简写方式适用于所有双目运算符。
2.控制语句可分为:分支语句,循环语句,转向语句。
3.分支语句包括:if、if-else、if-else if-else、switch。
4.循环语句包括:while、for、do-while。
5.转向语句包括:return、continue、break。
2.从控制台输入一个字符,如果输入的是m,则输出男性,否则 输出⼥性。
3.输⼊一个年份,判断该年份是否是闰年?如果是闰年,则输出该年是闰年,否则输出该年不是闰年。
提示: 闰年能被400整除或者能被4整除,但是不能被100整除。答案
表达式
表达式
定义:一种有值的语法结构。由运算符、常量及变量构成。C语言表达式基本遵循一般代数规则。表达式类型
变量常量表达式:a; sum; max; 1; 10;
算术表达式:a + b; a - b; i ++; i –;
赋值表达式:x = y; a *= b; c = (a - 10) + (b + 15);
逗号表达式:int a = 10, b = 15, c = 25;
关系表达式:x < y; x == y; x != y;
逻辑表达式:a && b; a || b; !a;
复合表达式:y = (x = (a - b * c)) + z;
表达式中的类型转换:混合于同一表达式中的不同类型常量及变量,应均变换为同一类型的量。C语言的编译程序将所有操作数变换为与最大类型操作数同类型。变换以一次一操作的方式进行。具体规则如下:
所有char及short int型量转为int型,所有float转换为double。
如果操作数对中一个为long double,则另一个转换为long double。
①否则,一个为double,另一个转为double。
②否则,一个为long,另一个转为long。
③否则,一个为unsigned,另一个转为unsigned。
一旦运用以上规则。每一对操作数均变为同类型。
注意,规则2有几种必须依次应用的条件。图2-1示出了类型转换。首先,charch转换成int,且floatf转换成double;然后ch/i的结果转换成double,因为f*d是double;最后由于这次两个操作数都是double,所以结果也是double。
强制类型转换
可以通过称为cast的构成符强迫一表达式变为特定类型。格式:(type)expression(type1)
这是标准C语言中的一个数据类型。例如,为确保表达式x/2的结果具有类型float,可写为:
(float)x/2,通常认为cast是操作符。作为操作符,cast是一元的,并且同其它一元操作符优先级相同。虽然cast在程序中用得不多,但有时它的使用的确很有价值。
例如,假设希望用一整数控制循环,但在执行计算时又要有小数部分。
#include <stdio.h> int main() { int i; for (i = 1; i <= 10; ++i) printf("%d/2 is : %f\n",i, (float)i/2); return 0; }
执行结果:
1/2 is : 0.500000 2/2 is : 1.000000 3/2 is : 1.500000 4/2 is : 2.000000 5/2 is : 2.500000 6/2 is : 3.000000 7/2 is : 3.500000 8/2 is : 4.000000 9/2 is : 4.500000 10/2 is : 5.000000
若没有cast(float),就执行整除运算,结果为整数;有了cast就可保证结果为小数。
空格与括号
为了增强程序的可读性,可以在表达式中插入空格与括号。加入的括号和空格并不会导致错误或减慢程序的执行速度。注意:加入括号的前提是不改变语句的结构。#include <stdio.h> int main() { int y1 = 8, y2 = 16, y3 = 54; int a = y1 - (y3 - y2); int b = y1 - y3 - y2; printf("a = %d\nb = %d\n",a,b);//a = -30 b = -62 return 0; }
语句
定义:语句指的是当程序运行时执行某个动作的语法结构。它改变变量的值,产生输出或处理输出。C语言中一共有四类语句。表达式语句
表达式语句是最简单的一种语句,在表达式的末尾加分号就形成了一个表达式语句。常见格式:
expression;
variable = expression;
最常用的表达式语句是函数调用语句和赋值语句。
函数调用语句也属于表达式语句,因为函数调用(如sin(x) )也属于表达式的一种。
赋值语句的作用是将等号左边变量的值改成等号右边表达式的值。
示例:求三个数中最大值
#include <stdio.h> // 求三个数中最大值 int returnMaxValue(int a ,int b, int c){ int maxValue = a > b ? a : b; maxValue = maxValue > c ? maxValue : c; return maxValue; } int main() { int a = 10;//赋值语句 int b = 19; int c = 8; int maxValue = returnMaxValue(a,b,c);//returnMaxValue(a,b,c)为函数调用语句 printf("a b c maxValue for %d\n",maxValue); return 0; }
语句块
可以用{ }将一系列语句括起来使其大功能上相当于一条语句,这就是语句块。语句块中可以有变量声明。示例:
int a = 10; int b = 15; { int c = a + b; printf("%d\n", c); }
空语句
即只有一个分号的语句,它什么也不做。当用在循环体中时,表示循环体什么也不做。示例:
for(int i = 0; i < 100; i++) ; //循环体为空,循环体内什么也不做。在程序中主要起到延时作用。
控制语句
控制语句用来实现对程序流程的选择、循环、转向和返回等进行控制,可分为三类:分支语句,循环语句,转向语句。分支语句
// If Statements if (conditional-expression) { then-clause } // conditional-expression为真时,执行then-clause,否则不执行。 // If-Else Statements if (conditional-expression) { then-clause } else { else-clause } // conditional-expression为真时,执行then-clause,否则执行else-clause。 // 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 } // 与If-Else Statements 一样的理解就行了。 // Switch Statements switch (control-expression) { case constant-expression-1: statements-1 . . . case constant-expression-n: statements-n default: default-statements } // control-expression的值等于constant-expression-1,执行statements-1, // 等于constant-expression-n则执行statements-n, // 若从constant-expression-1到constant-expression-n中的任何一个都不相等, // 则执行default-statements。
循环语句
// While Loops while (conditional-expression) { nested-statements } // conditional-expression为真时,nested-statements执行,直到conditional-expression为假时跳出循环。 // For Loops for (initialization; conditional-expression; increment) { nested-statements } // 开始执行initialization,然后执行conditional-expression判断真假, // 如果为假,跳出循环,否则执行nested-statements,之后再执行increment, // 执行conditional-expression。 // Do-While Loops do { nested-statements } while (conditional-expression); // 开始执行nested-statements,然后执行conditional-expression判断真假, // 如果为假跳出循环,否则执行nested-statements。
转向语句
// Return Statements return; return expression; // 将函数的值返回给主调函数 // Continue Statements continue; // continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。 // continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。 // Break Statements break; // break语句通常用在循环语句和开关语句中,当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起,即满足条件时便跳出循环。
语句简写
C语音提供了某些赋值语句的简写形式。示例:a = a + 15; 可以简写为a += 15;编译的时候+=操作符会通知编译程序将a+15的值赋值给a本身。这种简写方式适用于所有双目运算符。
总结
1.强制类型转换可以强迫一表达式变为特定类型。2.控制语句可分为:分支语句,循环语句,转向语句。
3.分支语句包括:if、if-else、if-else if-else、switch。
4.循环语句包括:while、for、do-while。
5.转向语句包括:return、continue、break。
练习
1.在控制台输入一个字符,如果输入的是m,则输出男性,否则什么都不输出。2.从控制台输入一个字符,如果输入的是m,则输出男性,否则 输出⼥性。
3.输⼊一个年份,判断该年份是否是闰年?如果是闰年,则输出该年是闰年,否则输出该年不是闰年。
提示: 闰年能被400整除或者能被4整除,但是不能被100整除。答案
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Ruby简明教程之循环语句介绍
- Lua和C语言的交互详解
- Lua学习笔记之运算符和表达式
- Lua教程(三):表达式和语句
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- MySQL循环语句之while循环测试
- 探索PowerShell(十) 循环语句介绍
- Ruby中case表达式详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法