初识C语言

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构化 程序设计语言之一。

C语言的介绍:

C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构化 程序设计语言之一。

发展史:

C语言的祖先是BCPL语言。1967年,剑桥大学的 Martin Richards 对CPL语言进行了简化,于是产生了BCPL(Basic Combined Pogramming Language)语言。

1970年,美国贝尔实验室的 Ken Thompson。以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。

在1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

为了使UNIX操作系统推广,1977年Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。1990年,国际标准化组织ISO(International Organization for Standards)接受了89 ANSI C 为I SO C 的标准(ISO9899-1990)。

1994年,ISO修订了C语言的标准。

1995年,ISO对C90做了一些修订,即“1995基准增补1(ISO/IEC/9899/AMD1:1995)”。

1999年,ISO有对C语言标准进行修订,在基本保留原来C语言特征的基础上,针对应该的需要,增加了一些功能,尤其是对C++中的一些功能,命名为ISO/IEC9899:1999。

2001年和2004年先后进行了两次技术修正。目前流行的C语言编译系统大多是以ANSI C为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则有略有差别。


C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。

语言特点:

C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。   

1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。   

2. C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。   

3. C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。   

4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。


第一个C语言程序:

6bf97799718244789935a1f72472204e.png


数据类型

8c144217fb63433c905a64c6f8a2d7a4.png

每个类型的大小


b0150281d2cb45dcb2741ff479694721.png36822152099c4ba7bb0e3bba4fcd0117.png


变量、常量

生活中的有些值是不变的(比如圆周率、性别、身份证号码、血型等)

有些只是可变的(比如年龄、体重、薪资等)

不变的值称为常量,改变的值称为变量。


变量的命名

1.只能由字母(包括大写小写)、数字和下划线(_)组成。

2.不能数字开头。

3.长度不超过63个字符。

4.变量名中区分大小写的。

5.变量名中不能使用关键字。


变量的分类

局部变量

全局变量


#include<stdio.h>
int global = 2019;//全局变量
int main()
{
  int local = 2018;//局部变量
  int global = 2020;//局部变量
  printf("global=%d\n", global);
  return 0;
}

变量的使用

#include <stdio.h>
int main()
{
  int numl = 0;
  int num2 = 0;
  int sum = 0;
  printf("输入两个操作数:");
  scanf("%d %d", &num1, &num2);
  sum = numl + num2;
  printf("sum = %d\n", sum);
  return 0;
}

4.4 变量的作用域和生命周期

作用域

       作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总有效               可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。

       1. 局部变量的作用域是变量所在的局部范围。

       2.全局变量的作用域是整个工程。

生命周期

       变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

       1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

       2.全局变量的生命周期是:整个程序的生命周期。


常量

C语言中的常量和变量的定义的形式有所差异。

C语言中的常量分为以下以下几种:

       字面常量

       const 修饰的常变量

       #define 定乂的标识符常量

       枚举常量


#include<stdio.h>
//举例
enum sex
{
  MALE,
  FEMALE,
  SECRET
};
//括号中的MALE,FEMALE,SECRETE是枚举常量
int main()
{
  //字面常量演示
  3.14;//字面常量
  1000;//字面常量
  //const修饰的常变量
  const float pai = 3.14f; //这里的pai是const修饰的常变量
  pai = 5.14;//是不能直接修饰的!
  //#define的标识符常量 演示
#define MAX 100
  printf("max = %d\n", MAX);
  // 枚举常量演示
  printf("%d\n", MALE);
  printf("%d\n", FEMALE);
  printf("%d\n", SECRET);
  return 0;
}


注:


上面例子上的pai 被称为const 修饰的常变量,const 修饰的常变量在C语言中只是在语法层面限制了

变量 pai 不能直接被改变,但是pai 本质上还是一个变量的,所以叫常变量。

字符串+转义字符+注释

1.字符串

"hello world.\n"

"hello world.\n"


这种由双引号 (Double Quote)引1起来的一串字符称为字符串字面值 (String Literal),或者简称字符串。

注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\。 是结束标志,不算作字符串


#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出”\0’的重要性)
int main()
char arr1[] = "bit";
char arr2[] = {'b','i','t'};
char arr3[] = {'b','i','t'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}

转义字符

假如我们要在屏幕上打印一个目录:c:\code\test.c

我们该如何写代码?

#include <stdio.h>
int main()
printf("c: \code\test.c\n");
return 0;

实际上程序运行的结果是这样的:



4a0f5530b77244ae80d146e9ab50afee.png

74cf5ca1528d49cfa8d2ae5ddb02b110.png

#include <stdio.h>
int main()
{
    //问题1:在屏幕上打印一个单引号',怎么做?
    //问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
    printf("%c\n", '\'');
    printf("%s\n", "\"");
    return 0;
}

注释

1. 代码中有不需要的代码可以直接删除,也可以注释掉

2. 代码中有些代码比较难懂,可以加一下注释文字

#include <stdio.h>
int Add(int x, int y)
{
    return x+y;
}
/*C语言风格注释
int Sub(int x, int y)
{
    return x-y;
}
*/
int main()
{
    //C++注释风格
    //int a = 10;
    //调用Add函数,完成加法
    printf("%d\n", Add(1, 2));
    return 0;
}

注释有两种风格:

C语言风格的注释/*xxxxxx*/

缺陷:不能嵌套注释

C++风格的注释//xxxxxxxx

可以注释一行也可以注释多行。

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
2月前
|
存储 机器学习/深度学习 编译器
一篇文章,把你的C语言拉满绩点
一篇文章,把你的C语言拉满绩点
16 0
|
3月前
|
编译器 C语言 C++
从C语言到C++
本文档详细介绍了C++相较于C语言的一些改进和新特性,包括类型检查、逻辑类型 `bool`、枚举类型、可赋值的表达式等。同时,文档还讲解了C++中的标准输入输出流 `cin` 和 `cout` 的使用方法及格式化输出技巧。此外,还介绍了函数重载、运算符重载、默认参数等高级特性,并探讨了引用的概念及其应用,包括常引用和引用的本质分析。以下是简要概述: 本文档适合有一定C语言基础的学习者深入了解C++的新特性及其应用。
|
6月前
|
机器学习/深度学习 人工智能 算法
|
6月前
|
C语言
【C语言】:图形打印
【C语言】:图形打印
60 0
|
7月前
|
BI 编译器 C语言
初识C语言一
初识C语言一
72 0
|
存储 编译器 C语言
|
C语言
C语言的部分杂碎知识
C语言的部分杂碎知识
|
C语言
【C语言】汉罗塔
【C语言】汉罗塔
108 0
|
C语言
C语言假期作业 DAY 14
C语言假期作业 DAY 14