C 语言基础教程(我的C之旅开始了)[八]
19. 基本数据类型:复数类型和虚数类型
C99 新增了复数类型(_Complex)和虚数类型(_Imaginary)。简单来说,C99 提供了三种复数类型:float _Complex,double _Complex,和 long double _Complex。对于 float _Complex 类型的变量来说,它包含两个 float 类型的值,一个用于表示复数的实部(real part),另一个用于表示虚部(imaginary part)。类似地,
double _Complex 包含两个 double 类型的值。以此类推。C99 也提供了三种虚数类型:float _Imaginary,double _Imaginary,以及 long double _Imaginary。虚数类型只有虚部,没有实部。
包含标准头文件 complex.h 后,我们就可以用 complex 来代表 _Complex,用
imaginary 来代表 _Imaginary,以及用 I 来代表虚数单位 i,也就是 -1 的平方根。例如:
#include <complex.h>
double _Complex x = 5.2; /* 实部等于 5.2,虚部为 0 */
double complex y = 5.0 * I; /* 实部为 0,虚部为 5.0 */
double complex z = 5.2 – 5.0 * I; /* 实部为 5.2,虚部为 5.0 */
注意:_Complex 类型对于独立式环境(freestanding environment)来说是可选的。可选的意思是,不强制必须支持这种类型。而所谓独立式环境,是指 C 程序可以在没有操作系统的情况下运行。_Imaginary 类型在任何环境下都是可选的。目前的编译器对这两种类型的支持都不太好,故而我在此就不对这两种类型进行更深入的讨论了。
至此,基本数据类型就全部讨论完了。
20. 转义字符使用实例 |
下面这个例子演示了 \a、\b、\t、\r,以及 \n 的作用。其中 \b,\t 和 \r 的概念可以追溯到电脑仍然使用打字机作为输出设备的时候,所以对于现代的一些电脑来说,它们可能不起作用。在某些麦金托什机(Macintosh)上,它们的作用就和我们下面所说的不一样。首先请认真看一下以下程序,然后编译运行一下,看看运行结果和您想象的是否一样,然后再看后面的详细解说。 /* esc_sq.c -- 使用转义字符 */ #include <stdio.h> int main(void) { float height; printf("\aPlease enter your height: _____ cm\b\b\b\b\b\b\b\b"); scanf("%f", &height); printf("\tYour height is %.2f.\rOh!\n", height); return 0; } 第一个 printf 通常会引起一声鸣响(\a),同时显示以下提示 Please enter your height: _____ cm 其中活跃位置(光标)在下划线的开端。活跃位置之所以会位于下划线的开端,是因为那八个 \b 把活跃位置后退了八个位置。顺带一题,下划线 _____ 由五个 _ 构成。注意:一般来说,\b 不会擦除前面输出的字符,但是在某些系统,\b 却会擦除前面输出的字符,导致显示结果为 Please enter your height: 。\a 产生的效果取决于硬件。一般来说,输出 \a 会产生鸣响。但是在某些系统,输出 \a 不会产生任何效果,或者仅仅显示一个特殊字符。 输入一个数后(比如输入 180.5),屏幕的显示会变成 Please enter your height: 180.5 cm 我们输入的数字取代了原来的下划线。接着我们需要按回车确定我们的输入。按下回车键后, 第二个 printf 运行结束后,屏幕显示如下: Please enter your height: 180.5 cm Oh! Your height is 180.50.
|
23. 乘法运算符和除法运算符 |
1. 乘法运算符(Multiplication Operator):* * 是乘法运算符。以下语句: meter = 100 * cm; 常量 100 和变量 cm 相乘,乘积被赋值给变量 meter。 2. 除法运算符(Division Operator):/ C 使用 / 作为除法运算符。/ 左边的操作数除以右边的操作数。也就是说,/ 左边是被除数,右边是除数。例如: var = 6/2; 6 除以 2 得 3,然后 3 被赋值给变量 var。 整数相除和浮点数相除有所不同。浮点数相除得到浮点数,整数相除得到整数。C 语言规定,整数相除产生的小数部分一律被抛弃,这就是所谓的截断(truncation)。例如:7/4 的结果是 1,而不是 1.75,也不是 2。 下面我们来看一个小程序。 /* divide.c */ int main(void) return 0; 输出为: integer division: 7/4 is 1 最后一个 printf 中,我们用浮点数除以整数,得到的结果和第二个 printf 一样。这是因为 C 自动把这两个操作数的类型转换成了同一种类型。本例中,整数 4 被转换成了浮点类型,然后再和浮点数 7. 相除。 C99 之前,正整数和负整数相除,如果产生小数部分,则相除的结果是不确定的。例如:7/-4 的结果可能是 -2,也可能是 -1。C99 规定,正整数和负整数相除,产生的小数部分一律被抛弃。也就是说,C99 中,7/-4 的结果是确定的,一定是 -1。 |
Tags:C 语言基础教程(我的C之旅开始了)[八]
相关文章
- 2013-05-05深入uCOS中全局变量的使用详解
- 2014-10-10C++设计模式之享元模式
- 2017-07-07KMP 算法实例详解
- 2013-09-09二叉查找树的插入,删除,查找
- 2013-12-12冒泡算法的改进具体实现
- 2015-09-09C语言的isatty函数和ttyname函数以及sendmsg函数用法
- 2013-09-09Linux vmstat命令实战详细解析
- 2017-05-05C++ 中CloseHandle 函数--关闭一个句柄
- 2013-07-07C语言中字符串和数字的相互转换实现代码
- 2013-05-05C语言 数与串之间转换的方法