C 程式设计从零开始之表达式

2008-02-23 05:24:36来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  本篇是此系列的开头,在学英语时,第一时间学的是字母,其是英语的基础。同样,在C 中,任何的代码都是通过标识符(Identifier)、表达式(Expression)和语句(Statement)及一些必要的符号(如大括号等)组成,在此先说明何谓标识符。

  标识符

  标识符是个字母序列,由大小写英文字母、下划线及数字组成,用于标识。标识就是标出并识别,也就是名字。其能够作为后面将提到的变量或函数或类等的名字,也就是说用来标识某个特定的变量或函数或类等C 中的元素。

  比如:abc就是个合法的标识符,即abc能够作为变量、函数等元素的名字,但并不代表abc就是某个变量或函数的名字,而所谓的合法就是任何一个标识符都必须不能以数字开头,只能包括大小写英文字母、下划线及数字,不能有其他符号,如,!^等,并且不能和C 关键字相同。也就是我们在给一个变量或函数起名字的时候,必须将起的名字看作是个标识符,并进而必须满足上面提出的需要。如12ab_C就不是个合法的标识符,因此我们不能给某个变量或函数起12ab_C这样的名字;ab_12C就是合法的标识符,因此能够被用作变量或函数的名字。

  前面提到关键字,在后续的语句及一些声明修饰符的介绍中将发现,C 提供了一些特别的标识符作为语句的名字,用以标识某一特定语句,如if、while等;或提供一些修饰符用以修饰变量、函数等元素以实现语义或给编译器及连接器提供一些特定信息以进行优化、查错等操作,如extern、static等。因此在命名变量或函数或其他元素时,不能使用if、extern等这种C 关键字作为名字,否则将导致编译器无法确认是个变量(或函数或其他C 元素)还是一条语句,进而无法编译。

  假如要让某个标识符是特定变量或函数或类的名字,就需要使用声明,在后续的文章中再具体说明。

  数字

  C 作为电脑编程语言,电脑是处理数字的,因此C 中的基础东西就是数字。C 中提供两种数字:整型数和浮点数,也就是整数和小数。但由于电脑实际并不是想象中的数字化的(详情参见《C 从零开始(三)》中的类型一节),所以整型数又分成了有符号和无符号整型数,而浮点数则由精度的区别而分成单精度和双精度浮点数,同样的整型数也根据长度分成长整型和短整型。

  要在C 代码中表示一个数字,直接书写数字即可,如:123、34.23、-34.34等。由于电脑并非以数字为基础而导致了前面数字的分类,为了在代码中表现出来,C 提供了一系列的后缀进行表示,如下:

  u或U 表示数字是无符号整型数,如:123u,但并不说明是长整型还是短整型

  l或L 表示数字是长整型数,如:123l;而123ul就是无符号长整型数;而34.4l就是长双精度浮点数,等效于双精度浮点数

  i64或I64 表示数字是长长整型数,其是为64位操作系统定义的,长度比长整型数长。如:43i64

  f或F 表示数字是单精度浮点数,如:12.3f

  e或E 表示数字的次幂,如:34.4e-2就是0.344;0.2544e3f表示一个单精度浮点数,值为254.4

  当什么后缀都没写时,则根据有无小数点及位数来决定其具体类型,如:123表示的是有符号整型数,而12341434则是有符号长整型数;而34.43表示双精度浮点数。

  为什么要搞这么多事出来,还分什么有符号无符号之类的?这全是因为电脑并非基于数字的,而是基于状态的,详情在下篇中将周详说明。

  作为科学计算,可能经常会碰到使用非十进制数字,如16进制、8进制等,C 也为此提供了一些前缀以进行支持。

  在数字前面加上0x或0X表示这个数字是16进制表示的,如:0xF3Fa、0x11cF。而在前面加一个0则表示这个数字是用8进制表示的,如:0347,变为十进制数就为231。但16进制和8进制都不能用于表示浮点数,只能表示整型数,即0x34.343是错误的。

  字符串

  C 除了提供数字这种最基础的表示方式外,还提供了字符及字符串。这完全只是出于方便编写程式而提供的,C 作为电脑语言,根本没有提供字符串的必要性。但是由于人对电脑的基本需要就是显示结果,而字符和字符串都由于是人易读的符号而被用于显示结果,所以C 专门提供了对字符串的支持。

  前面说过,电脑只认识数字,而字符就是文字符号,是一种图像符号。为了使电脑能够处理符号,必须通过某种方式将符号变成数字,在电脑中这通过在符号和数字之间建立一个映射来实现,也就是个表格。表格有两列,一列就是我们欲显示的图像符号,而另一列就是个数字,通过这么一张表就能够在图像符号和数字之间建立映射。现在已定义出一标准表,称为ASCII码表,几乎任何的电脑硬件都支持这个转换表以将数字变成符号进而显示计算结果。

  有了上面的表,当想说明结果为“A”时,就查ASCII码表,得到“A”这个图像符号对应的数字是65,然后就告诉电脑输出序号为65的字符,最后屏幕上显示“A”。

  这明显地繁杂得异常,为此C 就提供了字符和字符串。当我们想得到某一个图像符号的ASCII码表的序号时,只需通过单引号将那个字符括起来即可,如:'A',其效果和65是相同的。当要使用不止一个字符时,则用双引号将多个字符括起来,也就是所谓的字符串了,如:"ABC"。因此字符串就是多个字符连起来而已。但根据前面的说明易发现,字符串也需要映射成数字,但他的映射就不像字符那么简单能够通过查表就搞定的,对于此,将在后续文章中对数组作过介绍后再说明。



[1] [2] [3] 下一页

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: C 中堆内存的概念和操作方法入门

下一篇: 用C 实现简单的文档I/O操作

热门词条
热门标签