C语言入门教程

第一个C语言程序

下列代码,

#include 
int main()
{
    printf("Hello World! \n");
    return 0;
}

在终端进行编译使用以下步骤:
gcc -o 1-1 1-1.c,编译c语言程序,完成预处理-编译-汇编-链接,生成可执行文件。
./1-1,在Linux终端输入可执行文件的文件名可运行该文件。

C语言开发环境

常见的Linux版本:Ubuntu、CentOS、Deepin

C程序的创建过程

  • 编写
    Linux中,Vim编辑器也是常用的文本编辑器。
  • 编译
    输入是源文件,经过编译器输出是对象代码,存放的文件称为对象文件,在Linux中的扩展名为.o,在Windows中为.obj
    编译使用gcc -c 1-1.c
  • 链接
    组合成可执行文件,在Linux中没有扩展名,Windows中扩展名为.exe
    链接使用gcc - o 1-1 1-1.c
  • 执行

C语言的简单结构

  • 预处理指令
  • main()函数
  • 程序框架
  • printf()函数

数据类型

格式输出函数

printf(),例如printf("%d, %d", a, b)

格式输入函数

scanf(格式控制,地址表列),地址表列是由若干地址组成的表列,可以是变量的地址

注释

/* */ ,或者//

常量

  • 整型常量
  • 实型常量
    用字母e或者E指代以10为底的指数
  • 字符常量
    • 普通字符
    • 转移字符

变量

变量的名字便是一种标识符。

数据类型

为什么在用计算机运算时,需要指定数据的类型呢?
——在数学中,数值是不区分类型的,数值的运算是绝对准确的,例如:1/3 的值是 0.33333…(循环小数)。数学是研究抽象的学科,数和数的运算都是抽象的。而在计算机中,数据是存储在计算机中的一个个单元里面,它是具体存在的。而且,存储单元是由有限的字节构成的,每一个存储单元存储的数据是有限的,不可能存放无限大的数,也不能存放无限循环小数

C语言数据类型

C语言入门教程_第1张图片

整数类型

  • 基本类型int
    gcc编译器为每个整数类型分配4个字节32位,
    用整数补码存放,取值范围为 2 − 31 —— 2 31 − 1 2^{-31}——2^{31} -1 231——2311
    无符号unsigned int取值范围为 0 —— 2 31 − 1 0 ——2^{31}-1 0——2311
  • 短整型short
    2个字节
  • 长整形long
    8个字节

浮点数类型

为什么将实数称为浮点数?
——只要在小数点位置浮动的同时改变指数的值,就可以保证它的值不会改变。由于小数点的位置可以浮动,所以实数的指数形式称为浮点数。

浮点类型:

  • float单精度,4个字节,上下限:FLT_MINFLT_MAX
  • double双精度,8个字节,上下限:DBL_MINDBL_MAX

字符型

字符型数据在存储时,并不是把该字符本身存放到内存单元中,而是把该字符相应的 ASCII 码值存放到该存储单元中。
例如:

#include

int main()
{
    char a, b;
    a = 'c';
    b = 121;
    printf("%c, %c\n", a, b);
    printf("%d, %d\n", a, b);

    return 0;
}

输出:

c, y
99, 121

以字符形式输出时,先将存储单元中的 ASCII 码转换成相应的字符再输出;以整数的形式输出时,直接输出其 ASCII 码。
也可以对字符数据进行算术运算,例如:

#include 

int main()
{
    char a, x;
    int b;
    a = 'c';
    b = 1;
    x = a + b;
    printf("%c\n", x);
    printf("%d\n", x);

    return 0;
}

字符串常量

字符串常量是用一对双引号括起来的零个或多个字符组成的序列,如 “hello”,“China”,“b” 都是字符串常量。
字符串中的每个字符占用一个字节,在存储字符串常量时还要自动在其末尾加上 ‘\0’ 作为字符串结束的标志。因此b’ 和 “b” 是完全不同的。前者是字符常量,在内存中占用的字节数为 1;而后者是字符串常量,在内存中占用的字节数为 2,包含字符 ‘b’ 和 ‘\0’。

注意:在 C 语言中没有专门的字符串变量,如果你想要将一个字符串存放在变量中,必须使用字符数组,数组中每一个元素存放一个字符。

运算符和数据转换

基本算术运算符

  • x/y 中,两个实数相除的结果是双精度实数,两个整数相除的结果为整数。如 5/3 的结果为 1,舍去小数部分。
  • % 运算符要求参加运算的对象为整数,结果也是整数。如 7%3,结果为 1,除了%以外的运算符的操作数都可以是任何算数类型。

自增、自减

理解i++++i的作用即可。

注意: 自增运算符 (++) 和自减运算符 (–) 只能用于变量,而不能用于常量或表达式。

混合运算

数据类型优先级:
C语言入门教程_第2张图片

字符 (char) 型数据和整型数据进行运算,就是把字符的 ASCII 代码与整型运算。反之和浮点类型也是。
例如字母大小写转换,大小写相差32。

#include 

int main()
{
    // 将大写字母转换为小写字母
    char c1, c2;
    scanf("%c", &c1);

    c2 = c1 + 32;
    printf("%c\n", c2);

    return 0;
}

强转

一般形式(类型名) (表达式)

在强制类型转换时,得到一个所需类型的中间数据,而原来变量的类型未发生变化。

数据输入和输出

编译时需要注意,在 Linux 系统下,C 源文件若调用了 math 库里的函数,则编译时要加上 -lm (是字母 l ,不是数字 1),表示链接到 math 库。

下面的一个例子:

#include 
#include 

int main()
{
    double a, b, c, disc, x1, x2, p, q;
    scanf("%lf%lf%lf", &a, &b, &c);
    disc = b*b - 4*a*c;
    p = -b / (2.0 * a);
    q = sqrt(disc) / (2.0 * a);
    x1 = p + q, x2 = p - q;
    printf("x1 = %7.2f\nx2 = %7.2f\n", x1, x2);
    return 0;
}

解释上面的例子:
在 printf 函数中,不是简单地用 “%f” 格式声明,而是在格式符 “f” 的前面加了 “7.2”。表示的意思是在输出 x1,x2 时,指定数据占 7 列,其中小数占 2 列。

字符的输入输出

除了printf()scanf()之外输入输出字符,还可以使用putchar()输出, getchar()输入,

例如大小写转换,

#include 

int main()
{
    char a,b;
    a = getchar();
    b = a + 32;
    putchar(b);

    return 0;
}

你可能感兴趣的:(C,c语言,开发语言)