C语言基础学习笔记

C语言重要知识点记录
摘要由CSDN通过智能技术生成

第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

保留标识符包括那些以下划线字符开头的标识符和标准库函数名,如printf()。

第3章 数据和C

3.1 程序讲解
printf("%f", num)   // 打印浮点值
printf("%.2f", num) // .2用于精确控制输出小数点后两位
3.3 数据类型关键字

C语言的数据类型关键字:

最初K&R给出的关键字 C90标准添加的关键字 C99标准添加的关键字
int signed _Bool
long void _Complex
short _Imaginary
unsigned
char
float
double

按计算机的存储方式可分为两大基本类型:整数类型和浮点数类型。

3.4 C语言基本数据类型

八进制和十六进制

0x或0X前缀表示十六进制值,0前缀表示八进制。

以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x。另外,要显示各进制数的前缀0、0x和0X,必须分别使用%#o、%#x、%#X。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值