C 语言基础教程(我的C之旅开始了)[八]
19. 基本数据类型:复数类型和虚数类型
double _Complex 包含两个 double 类型的值。以此类推。C99 也提供了三种虚数类型:float _Imaginary,double _Imaginary,以及 long double _Imaginary。虚数类型只有虚部,没有实部。
imaginary 来代表 _Imaginary,以及用 I 来代表虚数单位 i,也就是 -1 的平方根。例如:
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 */
20. 转义字符使用实例
我们输入的数字取代了原来的下划线。接着我们需要按回车确定我们的输入。按下回车键后,
活跃位置会移动到下一行的开端。
Your height is 180.50. 。接着 \r 使活跃位置返回当前行的开端,然后输出 Oh! ,
最后 \n 引起换行。
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 */
#include <stdio.h> int main(void)
{ printf("integer division: 7/4 is %d \n", 7/4); printf("floating division: 7./4. is %f \n", 7./4.); printf("mixed division: 7./4 is %f \n", 7./4); return 0;
} 输出为:
integer division: 7/4 is 1
floating division: 7./4. is 1.750000 mixed division: 7./4 is 1.750000 最后一个 printf 中,我们用浮点数除以整数,得到的结果和第二个 printf 一样。这是因为 C 自动把这两个操作数的类型转换成了同一种类型。本例中,整数 4 被转换成了浮点类型,然后再和浮点数 7. 相除。
C99 之前,正整数和负整数相除,如果产生小数部分,则相除的结果是不确定的。例如:7/-4 的结果可能是 -2,也可能是 -1。C99 规定,正整数和负整数相除,产生的小数部分一律被抛弃。也就是说,C99 中,7/-4 的结果是确定的,一定是 -1。 |