C语言学习篇-5表达式与语句

原创 2016年06月01日 12:12:10

说明:控制语句在程序中起到对程序流程的控制作用。

表达式

表达式

  1. 定义:一种有值的语法结构。由运算符、常量及变量构成。C语言表达式基本遵循一般代数规则。
  2. 表达式类型
    变量常量表达式: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;
  3. 表达式中的类型转换:混合于同一表达式中的不同类型常量及变量,应均变换为同一类型的量。C语言的编译程序将所有操作数变换为与最大类型操作数同类型。变换以一次一操作的方式进行。具体规则如下:
    这里写图片描述
    1. 所有char及short int型量转为int型,所有float转换为double。
    2. 如果操作数对中一个为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。

强制类型转换

  1. 可以通过称为cast的构成符强迫一表达式变为特定类型。
  2. 格式:(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;
}

语句

  1. 定义:语句指的是当程序运行时执行某个动作的语法结构。它改变变量的值,产生输出或处理输出。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语句只用在forwhiledo-while等循环体中,常与if条件语句一起使用,用来加速循环。

// Break Statements 
break;
// break语句通常用在循环语句和开关语句中,当break语句用于do-whileforwhile循环语句中时,可使程序终止循环而执行循环后面的语句, 通常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#学习之语句、表达式和运算符

语句程序所执行的操作以“语句”表达。 常见操作包括声明变量、赋值、调用方法、循环访问集合,以及根据给定条件分支到一个或另一个代码块。 语句在程序中的执行顺序称为“控制流”或“执行流”。 根据程序对运行...
  • Dennison_
  • Dennison_
  • 2016年10月06日 19:44
  • 1044

C语言中的算术运算符和算术表达式

C语言中的算术运算符和算术表达式 C语言中运算和表达式的数量很多,C语言正是因为丰富的运算符和表达式使其语言功能十分完善。C语言的运算符不仅具有不同的优先级,还有结核性。在表达式中,各运算表达量参与...
  • sardine_c
  • sardine_c
  • 2015年11月01日 23:06
  • 3362

《C/C++学习指南(语法篇)》 - 关于本书

创作目的:想以自己的能力和经验为国内(及国外)的读者奉献一本好书,一本让人一看就懂、“不可能读不懂”的经典教程。它的理念是让编程变得简单,让人一看就懂。它的目标是成为大中专院校、培训班、从业人员和爱好...
  • iamshaofa
  • iamshaofa
  • 2015年03月12日 14:39
  • 4889

c语言基础(5)--运算符,表达式和语句

申明:以下图片均来自c primer plus(第五版)中文版! 1.sizeof运算符和size_t类型: 2.模运算%: 3.增量和减量运算符(++和--): 4.增量与...
  • Acmer_Sly
  • Acmer_Sly
  • 2016年09月07日 19:58
  • 163

C语言学习_005_运算符、表达式和语句

基本运算符         赋值运算符 =              int  i = 9;             数据对象:泛指数据存储区,能用于保存值。             ...
  • shulq123456
  • shulq123456
  • 2012年05月03日 13:44
  • 165

C语言基本教程 第5课:语句和表达式

从这一课开始,终于可以愉快地编码了. 首先 学习: C语言输入和输出 . C语言是一种编程语言,就像其他语言一样,也是一句一句的表达. C语言习惯用小写字母,大小写敏感,不使用行号,无程序行...
  • beijiwei
  • beijiwei
  • 2016年08月18日 15:19
  • 657

C语言的运算符、表达式和语句

1、表达式:由操作数和操作符共同
  • whh4122
  • whh4122
  • 2014年09月14日 17:20
  • 314

c语言核心整理之数据类型,运算符,表达式和语句

本文主要整理了c语言核心中有关数据类型,运算符,表达式和语句方面的知识。...
  • zhangwen_zw
  • zhangwen_zw
  • 2017年07月09日 09:09
  • 126

步步为营<三> C语言 语句和表达式

好多人都觉得C语言很难,尤其对初学者来说. 其实很简单了, 目前来说也只是用到了 初中学到的代数和不到40个英语单词而已.      变量是什么,就是用一个字符或者单词 代表一个 数而已, 什么分支结...
  • beijiwei
  • beijiwei
  • 2016年06月12日 20:50
  • 243

C语言的表达式与语句

C语言中,表达式是显示如何计算值的公式。语句是C语言的关键特性之一,表示程序运行时执行的命令。本文介绍并示例了C语言中的表达式和语句...
  • lemonrabbit1987
  • lemonrabbit1987
  • 2015年08月06日 06:04
  • 1130
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言学习篇-5表达式与语句
举报原因:
原因补充:

(最多只允许输入30个字)