C语言基础学习笔记

文章目录

  • 第1章初识C语言
        • 1.6 语言标准
        • 1.8 编程机制
  • 第2章 C语言概述
        • 2.2 语言风格
        • 2.7 调试程序
        • 2.8 关键字和保留标识符
  • 第3章 数据和C
        • 3.1 程序讲解
        • 3.3 数据类型关键字
        • 3.4 C语言基本数据类型
        • 3.5 使用数据类型
        • 3.7 转义序列示例
  • 第4章 字符串和格式化输入/输出
        • 4.1 前导程序
        • 4.2 字符串
        • 4.3 常量和C预处理器
        • 4.4 printf()和scanf()
  • 第5章 运算符、表达式和语句
  • 第6章 C控制语句:循环
        • 6.3 用关系运算符和表达式比较大小
  • 第7章 C控制语句:分支和跳转
        • 7.2 if else语句

第1章初识C语言

1.6 语言标准

第一个ANSI/ISO C标准

美国国家标准协会(ANSI)于1983年组建了一个委员会(X3J11),开发了一套新标准,并于1989年正式公布。该标准(ANSI C)定义了C语言和C标准库。国际标准化组织于1990年采用了这套C标准(ISO C)。ISO C和ANSI C是完全相同的标准。ANSI/ISO标准的最终版本通常叫作C89(因为ANSI 于 1989 年批准该标准)或C90(因为ISO于1990年批准该标准)。另外,由于ANSI先公布C标准,因此业界人士通常使用 ANSI C。

C99标准

1994年,ANSI/ISO联合委员会(C9X委员会)开始修订C标准,最终发布了C99标准。其达成的新目标:

  • 第1,支持国际化编程。例如提供多种方法处理国际字符集。
  • 第2,弥补缺陷。对于C移至64位处理器时,添加标准。
  • 第3,适应科学和工程项目中的关键数值计算,提高C的适应性。

C11标准

标准委员会在2007年承诺C标准的下一个版本是C1X,2011年终于发布了C11标准。出于对当前编程安全的担忧,不那么强调“信任程序员”目标了。同时并未很好地接受和支持C99,使得C99的一些特性成为了C11的可选项。新标准添加了可选项支持当前使用多处理器的计算机。

1.8 编程机制

GUN编译器集合和LLVM项目

GUN项目始于1987年,是一个开发大量自由UNIX软件的集合(GUN的意思是“GUN’s Not UNIX”,即GUN不是UNIX)。GUN编译器集合(也被称为GCC,其中包含GCC C编译器)是该项目的产品之一。用gcc命令即可调用GCC C编译器。许多使用gcc的系统都用cc作为gcc的别名。

LLVM项目成为cc的另一个替代品。该项目是与编译器相关的开源软件集合,始于伊利诺大学2000年的研究项目。它的Clang编译器处理C代码,可以通过clang调用。

GUN和LLVM都可以用-v选项来显示版本信息,因此各系统都使用cc别名来代替gcc或clang命令。以下组合:

cc -v

显示你所使用的编译器及其版本。
gcc和clang命令都可以根据不同的版本选择运行时选项来调用不同C标准。

gcc -std=c99 inform.c
gcc -std=c1x inform.c
gcc -std=c11 inform.c

第一行调用C99标准,第2行调用GCC接受C11之前的草案标准,第3行调用GCC接受的C11标准版本。Clang编译器在这一点上用法与GCC相同。

第2章 C语言概述

2.2 语言风格

命名

C99和C11允许使用更长的标识符名,但是编译器只识别前63个字符。对于外部标识符,只允许使用31个字符。

操作系统和C库经常使用以一个或两个下划线字符开始的标识符(如,_kcab),因此最好避免在自己的程序中使用这种名称。标准标签都以一个或两个下划线字符开始,如库标识符。这样的标识符都是保留的。同时C语言的名称区分大小。

C99之前的标准要求把声明都置于块的顶部,这样规定的好处是:把声明放在一起更容易理解程序的用途。C99允许在需要时才声明变量,这样做的好处是:在给变量赋值之前声明变量,就不会忘记给变量赋值。

**函数调用语句:**在历年的C标准中从来没有函数调用语句!值得一提的是,函数调用本身是一个表达式,圆括号是运算符,圆括号左边的函数名是运算对象。在C11标准中,这样的表达式是一种后缀表达式。在表达式末尾加上分号,就成了表达式语句。

2.7 调试程序

语法错误:指把有效的C符号放在错误的地方,不遵守C语言的规则就会犯语法错误。

语义错误:如果遵循了C规则,但是结果不正确,那就是犯了语义错误。例如逻辑上的错误,编译器无法检测出。

2.8 关键字和保留标识符

ISO C关键字:

C90 C99 C11
auto extern short const _Alignas _Thread_local
break float sizeof enum _Alignof
case for static signed _Atomic
continue goto struct void _Bool
default if switch volatile _Complex
do inline typedef _Generic
double int union _Imaginary
else long _Noreturn
while unsigned _Static_assert

你可能感兴趣的:(C/C++,c语言)