目录

  • 1 第一章 C语言简介
    • 1.1 C语言前世今生
    • 1.2 主流开发环境介绍
    • 1.3 第一个小程序解析
    • 1.4 常见编译错误
    • 1.5 章节知识点小结
  • 2 算法基础
    • 2.1 算法-程序的灵魂
    • 2.2 算法的描述-流程图
  • 3 数据类型与运算符
    • 3.1 数据描述
    • 3.2 运算符和表达式1
    • 3.3 运算符和表达式2
    • 3.4 章节知识点小结
  • 4 顺序结构程序设计
    • 4.1 输入和输出
    • 4.2 顺序结构程序设计
    • 4.3 章节知识点小结
  • 5 选择结构程序设计
    • 5.1 关系运算符和关系表达式
    • 5.2 逻辑运算符和逻辑表达式
    • 5.3 if语句
    • 5.4 条件运算符
    • 5.5 switch语句
    • 5.6 章节知识点小结
  • 6 循环结构程序设计
    • 6.1 while循环结构
    • 6.2 do_while循环结构
    • 6.3 for循环结构
    • 6.4 循环的嵌套
    • 6.5 break语句和continue语句
    • 6.6 章节知识点小结
  • 7 数组
    • 7.1 一维数组
    • 7.2 二维数组
    • 7.3 字符数组
    • 7.4 章节知识点小结
  • 8 函数
    • 8.1 子程序设计
    • 8.2 函数定义
    • 8.3 函数的调用
    • 8.4 局部变量和全局变量
    • 8.5 参数传递
    • 8.6 函数递归调用
    • 8.7 章节知识点小结
  • 9 指针
    • 9.1 指针的基本概念
    • 9.2 指针变量的定义及引用
    • 9.3 通过指针引用数组元素
    • 9.4 指向多维数组的指针和指针变量
    • 9.5 用指向数组的指针作函数参数
    • 9.6 指针与字符串
    • 9.7 函数指针和指针函数
    • 9.8 章节知识点小结
  • 10 用户自己建立数据类型
    • 10.1 定义和使用结构体变量
    • 10.2 使用结构体数组
    • 10.3 结构体指针
    • 10.4 章节知识点小结
  • 11 编译预处理
    • 11.1 宏定义预处理
    • 11.2 文件包含预处理
    • 11.3 条件编译预处理
    • 11.4 章节知识点小结
  • 12 文件
    • 12.1 文件的基本知识
    • 12.2 文件的基本操作
    • 12.3 章节知识点小结
运算符和表达式2

一、强制类型转换运算符

有两种类型转换:

(1)系统自动进行的类型转换

整型、实型、字符型数据间可以进行混合运算。在运算时,不同类型的数据会自动转换成同一类型,然后再进行运算,这种转换称为隐式转换,由系统自动进行。

(2)强制类型转换

强制类型转换运算符的一般形式为:

              (类型名)(表达式)

如:

(double)a      (将a转换成double类型)

(float)(5%3)   (将5%3的值转换成float型)

习题:分析下面程序的运行结果。

#include<stdio.h>

void main()

{int i,j;    float k;

 i=10; j=3;

 k=(float)i/j;

 printf ("k=%.2f\n",k);

 return;

}

程序的运行结果:


结果分析:语句k=(float)i/j中,首先将i转换为浮点型数据,然后再除以3,得到浮点型数据3.33333,printf中将该数按小数点后2位的格式输出,因此得到结果3.33。

思考:

将上题程序中“k=(float)i/j”这条语句改为“k=(float)(i/j)”,程序的运行结果是多少?

二、关系运算符和关系表达式

1.关系运算符

用来对两个数值进行比较的运算符

C语言提供6种关系运算符:

①< (小于)   ② <= (小于或等于)  ③> (大于)   ④ >=  (大于或等于) 


⑤==  (等于)      ⑥!=  (不等于) 

其中①~④优先级相同,⑤、⑥优先级相同,且①~④优先级高于⑤、⑥优先级。

关系、算术、赋值运算符的优先级如下所示:

(2)关系表达式

用关系运算符将两个数值或数值表达式连接起来的式子。关系表达式的值是一个逻辑值,即“真”或“假”。如:

“5==3”的值为“假”

“5>3” 的值为“真”

注意:在C语言中,以“1”代表“真”,以“0”代表“假”。

三、逻辑运算符和逻辑表达式

1. 逻辑运算符

3种逻辑运算符:

&&(逻辑与)    ||(逻辑或)    !(逻辑非)

其中:&&和||是双目(元)运算符,!是一目(元)运算符。

逻辑运算符的优先次序:

!  → && → ||       (!为三者中最高)

与其他运算符的优先次序如下图所示:

2.逻辑运算的真值表


3.逻辑表达式

用逻辑运算符将关系表达式或其他逻辑量连接起来的式子,逻辑表达式的值应该是逻辑量“真”或“假”,编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。

习题:写出以下各题的逻辑表达式。

(1)判断年龄(age)在13至17岁之内?

    age>=13 && age<=17

(2)判断年龄 (age) 小于12或大于65?

     age<12 || age>65

(3)判别某一年是否闰年。闰年的条件是符合下面二者之一:

①能被4整除,但不能被100整除,如2008

②能被400整除,如2000

(year % 4 == 0 && year %100 !=0) || year % 400 == 0

四、逗号运算符和逗号表达式

逗号表达式的一般形式为:

      表达式1,表达式2,……,表达式n

逗号表达式的求解过程是:先求解表达式1,再求解表达式2,……,最后求解表达n的值。整个逗号表达式的值是表达式n的值。

有表达式x=(a=3,6*3),计算表达式中x的值。

计算结果分析:表达式1中先执行括号里面的表达式(a=3,6*3),括号内的表达式是一个逗号表达式,按逗号表达式的求解过程,先求解a=3,再求解6*3,并将6*3的结果18作为整个逗号表达式的值,最后将逗号表达式的值(18)赋给x,因此x的值为18。

思考:表达式:x=a=3,6*a,计算表达式中x的值。