C语言学习-第三章 简单的C程序设计——顺序程序设计②

321 阅读5分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

运算符和表达式

C运算符

C语言提供了以下运算符

image.png

基本的算术运算符

image.png

自增(++)、自减(--)运算符

++i,--i; // 在使用i之前,先使i的值加(减)1
i++,i--; // 在使用i之后,使i的值加(减)1

算术表达式和运算符的优先级与结合性

算术运算符是自左至右(左结合性),赋值运算符是自右至左(右结合性)

不同类型数据间的混合运算

如果一个运算符两侧的数据类型不同,则先自动进行类型转换,使二者成为同一种类型,然后进行运算。整型、实型、字符型数据间可以进行混合运算。规律为:

  • +、-、*、/运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算
  • 如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型
  • 字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算

强制类型转换运算符

(类型名)(表达式)

语句

C语句的作用和分类

一个函数包含声明部分执行部分,执行部分是由语句组成的,语句的作用是向计算机系统发出操作指令,要求执行相应的操作。

C语句分为以下5类:

(1)控制语句

  • if()...else... 条件语句
  • for()... 循环语句
  • while()... 循环语句
  • do...while() 循环语句
  • continue 结束本次循环语句
  • break 中止执行switch或循环语句
  • switch 多分支选择语句
  • return 从函数返回语句
  • goto 转向语句,在结构化程序中基本不用goto语句 ():判别条件 ...:内嵌的语句

(2)函数调用语句 由一个函数调用加一个分号构成。

如 printf("This is a C statement.");

(3)表达式语句 由一个表达式加一个分号构成,如由赋值表达式构成一个赋值语句 a=3;

(4)空语句 ; 只有一个分号,什么也不做,可以用来作为流程的转向点(流程从程序其他地方转到此语句处),也可以用来作为循环语句中的循环体(循环体是空语句,表示循环体什么也不做)

(5)复合语句

最基本的语句-赋值语句

  • 赋值运算符 "="

  • 复合的赋值运算符 "="之前加上其他运算符,如"+="

  • 赋值表达式 由赋值运算符将一个变量和一个标傲世连接起来的式子成为“赋值表达式”,它的一般形式为变量 赋值运算符 表达式 如 a=3*5

  • 赋值过程中的类型转换

    • 类型一致,直接进行赋值
    • 类型不一致,但都是基本类型时,在赋值时要进行类型转换。类型转换是系统自动进行的,规则是:
      • 将浮点型数据(包括单、双精度)赋值给整型变量时,先对浮点数取整,即舍弃小数部分,然后赋予整型变量
      • 整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中
      • 将double型数据赋给float变量时,先将双精度数转换为单精度,即只取6~7位有效数字,存储到float型变量的4个字节中。双精度数值的大小不能超出float型变量的数值范围。
      • 字符型数据赋给整型变量,将字符的ASCII代码赋给整型变量
      • 将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值的变量(即发生“截断”)
  • 赋值表达式和赋值语句 赋值表达式的末尾没有分号,而赋值语句的末尾必须有分号。在一个表达式中可以包含一个或多个赋值表达式,但绝不能包含赋值语句。

  • 变量赋初值

数据的输入输出

  • 所谓输入输出是以计算机主机为主体而言的。从计算机向输出设备(如显示器、打印机等)输出数据成为输出,从输入设备(如键盘、光盘、扫描仪等)向计算机输入数据成为输入
  • C语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中的函数来实现的。
    • putchar(输出字符)
    • getchar(输入字符)
    • printf(格式输出)
    • scanf(格式输入)
    • puts(输出字符串)
    • gets(输入字符串)
  • 要在程序文件的开头用预处理指令#include 把有关头文件放在本程序中#include <stdio.h> 还有一种形式#include "stdio.h"

这两种#include指令形式的区别是: 用尖括号形式(如<stdio.h>)时,编译系统从存放C编译系统的子目录中去找要包含的文件(如stdio.h),这成为标准方式。如果用双撇号形式(如 "stdio.h"), 在编译时,编译系统先在用户的当前目录(一般是用户存放源程序文件的子目录)中寻找要包含的文件,若找不到,再按标准方式查找