细说C语言

Posted 孙中明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了细说C语言相关的知识,希望对你有一定的参考价值。

概述

#include<stdio.h>
int main()
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d",a+b);
    return 0;

hello world

  1. 头文件 .h

  2. 主函数 main()是主函数,每一个 c 源程序都必须有,且只能有一个<u>主函数</u>。
  3. c 语言规定:对 scanfprintf 可以省去对其头文件的包含命令;
  4. 源程序中用到的变量都必须先说明后使用;
  5. 自定义函数也要在主函数中先说明。
  6. stido.h 是标准输入输出函数的头文件。
  7. scanfprintf(格式输入函数和格式输出函数)参数表由以下两个部分组成“格式控制串”,参数表.

c 源程序的结构特点

  1. 一个C语言源程序可以由一个或多个源文件组成。
  2. 每个源文件可由一个或多个函数组成。
  3. 一个源程序不论由多少个文件组成,都有一个且只能有一个 main 函数,即主函数。
  4. 源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源

文件或源程序的最前面。

  1. 每一个说明,每一个语句都必须以分号结尾。<u>但预处理命令,函数头和花括号“”之</u>

<u>后不能加分号。</u>

  1. 标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再

加空格来间隔。

数据类型、运算符和表达式

数据类型可分为:

  • 基本数据类型,
    • 整型、
    • 在内存中,数值以补码表示。
    • 正数补码与原码相同,
    • 负数补码为绝对值按位取反再加 1。
    • 整型变量分类:
      • 基本型、short int 在内存中都占两个字节,
      • 长整型占 4 字节。
      • 无符号型unsigned 与上面三种类型匹配使用。
    • 字符型、
    • 字符常量 用单引号括起来的一个字符。把数字括起来就不能当做数字进行数值运算。
    • 转义字符 了解常用转义字符的含义。如\\n,\\t,\\b,\\r,\\,\\,\\",\\a,\\ddd,\\xhh
    • 字符变量
      • 每一个字符变量分配一个字节空间,因此只能存贮一个字符。
      • 实际上字符是以 ASCII 码
    • 字符串常量由双引号括起来。"CHINA","C program"
      • 字符常量可以赋值给字符变量,但是 C 语言中没有相应的字符串变量。
      • 字符串常量占的内存字节数等于字符串中字节数加 1,增加的一个为"\\0",结束符号。如"a"的存放占 2 字节,a的存放占 1 字节。
    • 实型(浮点型)、
    • 实型变量
      • 实型数据一般占 4 自己内存空间,由数符(+、-)、小数部分、指数三部分构成
      • 双精度占 8 字节空间,可提供 16 位有效数字。
      • 长双精度占 16 字节空间,可提供 19 位有效数字。
      • 定义规则与整型相同。
    • 实型常量(也称为浮点型)
      • 表示方法:十进制,如 5.789;指数形式,aEn(a 为十进制数,n 为十进制整数)
      • 实型常数都按双精度 double 型处理。
      • 标准 c 允许浮点数使用后缀,f 或 F,表示该数为浮点数。
    • 枚举类型
  • 构造数据类型,
    • 数组类型、
    • 结构体类型、
    • 共用体类型
  • 指针类型,
  • 空类型

变量赋值

允许在变量定义时候赋值,但是不能连续赋值,如 a=b=c=5 是不合法的。

各类数值型数据之间的混合运算

  • 若参与运算量的类型不同,则先转换为同一类型,然后进行运算。
  • 转换按数据长度增加的方向进行,以保证精度不降低。
  • 所有的浮点运算都是以双精度进行的。
  • char 型和 short 型参与运算时,必须先转换为 int 型。
  • 赋值运算中,赋值号两边的数据类型不同时,赋值号右边量的类型将转换为左边的类型。这可能导致精度丢失,丢失的部分按四舍五入。

算术运算符和算术表达

  • 除法参与运算量均为整数时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。如 20/7 结果为 2,20.0/7=2.857143
  • C 语言中左结合性指自左至右运算,如 x+y+z,=号具有右结合性。单目运算符、三目运算符、赋值运算符具有右结合性。c 语言中,有 15 个优先级,1 级最高,15 级最低。
  • 求余运算符要求参与运算的均为整型。
  • 单目,双目运算符的概念。
  • 注意理解++i 与 i++的区别。++i 表示在执行++i 所在语句时先有一条 i=i+1 指令,i++表示在执行 i++所在语句之后有一条 i=i+1 指令。

逗号运算符和逗号表达式

  • C 语言中逗号也是一种运算符。其功能是把两个表达式连接起来组成一个表达式

    表达式 1,表达式 2

  • 其求值过程是分别求两个表达式的值,并以表达式 2 的值作为整个逗号表达式值

    如 y=((x=2+2),3+3),则 y 的值为 6

以上是关于细说C语言的主要内容,如果未能解决你的问题,请参考以下文章

用C语言编写一个计算器程序,实现加,减,乘,除,求平方根(正数),倒数等功能.

c++中的位运算计算问题

18 位运算

细说C语言

C语言-细说函数与结构体

移位运算符的效果