C 语句

C 语句的作用和分类

  • 控制语句
    1. if…else…
    2. for( ) …
    3. while( ) …
    4. do…while( ) …
    5. continue
    6. break
    7. switch
    8. return
    9. goto
  • 函数调用语句
  • 表达式语句
  • 空语句 ;
    1. 作为流程的转向点
    2. 作为循环体
  • 复合语句
    • 又称代码块,语句项。

赋值语句

变量 赋值运算符 表达式

赋值运算符左侧应该是一个可修改的“左值”

左值意味着它可以出现在赋值运算符的左侧,它的值是可以改变的。

不是任何数据都可作为左值的,他必须被分配存储空间且其值可被修改。

赋值过程中的类型转换
  • 跨类型赋值
  1. 浮点数赋给整数时,浮点数取整,舍去小数部分(取整)
  2. 整数赋给浮点数时,数值不变,以浮点数的形式赋值(加零)
  3. 字符型数据赋给整型变量时,将ACSII码存入其中(ACSII)
  • 实型数据赋值
  1. double类型数据赋给float类型时,只取7位有效数字,然后赋值(截取)
  2. float类型数据赋给double类型时,数值不变,扩展到15位有效数字(加零)
  • 整型数据赋值
  1. int类型数据赋值给short类型时,只将低字节原封不动赋值(截断)

  1. short类型数据赋值给int类型时,数值不变,原封不动赋值(不断)

总结:

  1. 实型数据之间或是整实之间相互赋值,先类型转换在赋值。
  2. 整型数据之间赋值,则是按存储单元中的存储形式直接截取。

数据的输入输出

scanf 函数
scanf() 函数从终端输入的三个数据分别送到地址为&a,&b,&c的三个存储单元中,也就是赋值给变量a,b,c 
格式声明为"%f%f%f",则输入三个数分别用空格隔开,回车隔开也行。如用其他符号就会出错。
printf 函数
%7d,7为指定域宽,不足7列补空格(右对齐),加个负号左对齐。超出7列不作为。

预处理指令#include

在对程序进行预编译预处理时,系统会自动把该头文件的内容调用出来,取代本行的#include指令,使之成为程序的一部分。

尖括号<>和双引号“ ”两种形式有什么区别?

  1. #include"stdio.h"

使用双引号“ ”,编译系统自动到代码保存路径去寻找,如果找不到,才会使用标准方式查找,所以这种一般是用于自定义头文件。

  1. #include<stdio.h>

使用尖括号<>,代表编译系统会自动到编译器安装路径的子目录中寻找,这种被称为标准方式。如下图笔者vs2019的头文件所在位置为

格式字符
  1. %d 格式符

    在格式声明中指定域宽(所占列数),如"%5d",输出区域占5列,右对齐。

  2. %c 格式符

  3. %s 格式符

  4. %f 格式符

在格式声明中指定域宽和小数位数,如"%m.nf",则表示指定数据占m列,其中小数占n列。(多余位数四舍五入)

使用%f输出时要注意数据本身能提供的有效数字,如float最多提供7位有效数字,double最多提供15位有效数字。

%m.nf使数据右对齐,%-m.nf使数据左对齐

  1. %e或%E 格式符

    %e或%E 代表以指数形式输出实数。

    一般编译器会自动规定输出数字的小数部分位6位,指数部分为5位。(vs2019里指数部分占4列,如e+02)

    且以科学计数法的形式输出(即有效部分的整数部分占1位,小数部分占6位),如:

  1. %i 格式符

与%d同义。

  1. %o 格式符

按8进制位输出。

  1. %x或%X 格式符

按16进制位输出。

1 2 3 4 5 6 7 8 9 10 a b c d e f

  1. %u 格式符

按10进制输出无符号数 unsigned int

  1. %g 格式符

使用%g来输出浮点数,使浮点数自动选择%f或%e的形式输出,目的是使得输出域宽最短,不输出无意义的0