源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C 语言基础教程(我的C之旅开始了)[八]

  • 时间:2020-09-27 18:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C 语言基础教程(我的C之旅开始了)[八]
[b]19. 基本数据类型:复数类型和虚数类型[/b]
C99 新增了[b]复数类型[/b]([b]_Complex[/b])和[b]虚数类型[/b][b]_Imaginary[/b])。简单来说,C99 提供了三种复数类型:[b]float _Complex[/b][b]double _Complex[/b],和[b]long double _Complex[/b]。对于 [b]float _Complex[/b] 类型的变量来说,它包含两个[b]float[/b] 类型的值,一个用于表示复数的[b]实部[/b]([b]real part[/b]),另一个用于表示[b]虚部[/b]([b]imaginary part[/b])。类似地, [b]double _Complex [/b]包含两个[b]double[/b] 类型的值。以此类推。C99 也提供了三种虚数类型:[b]float _Imaginary[/b][b]double _Imaginary[/b],以及[b]long double _Imaginary[/b]。虚数类型只有虚部,没有实部。
包含标准头文件[b]complex.h [/b]后,我们就可以用[b]complex[/b] 来代表[b] _Complex[/b],用 [b]imaginary[/b] 来代表[b]_Imaginary[/b],以及用[b]I[/b] 来代表虚数单位[b]i[/b],也就是[b]-1[/b] 的平方根。例如:
    #include[b]<[/b]complex.h[b]>[/b]         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 */
[b]注意[/b]:[b]_Complex[/b] 类型对于[b]独立式环境[/b]([b]freestanding environment[/b])来说是[b]可选的[/b]。可选的意思是,不强制必须支持这种类型。而所谓[b]独立式环境[/b],是指 C 程序可以在没有操作系统的情况下运行。[b]_Imaginary[/b] 类型在任何环境下都是可选的。目前的编译器对这两种类型的支持都不太好,故而我在此就不对这两种类型进行更深入的讨论了。
    至此,基本数据类型就全部讨论完了。
[b]20. 转义字符使用实例 [/b]
下面这个例子演示了[b]\a[/b]、[b]\b[/b]、[b]\t[/b]、[b]\r[/b],以及[b]\n[/b] 的作用。其中[b]\b[/b],[b]\t[/b] 和[b]\r [/b]的概念可以追溯到电脑仍然使用打字机作为输出设备的时候,所以对于现代的一些电脑来说,它们可能不起作用。在某些麦金托什机(Macintosh)上,它们的作用就和我们下面所说的不一样。首先请认真看一下以下程序,然后编译运行一下,看看运行结果和您想象的是否一样,然后再看后面的详细解说。
/* esc_sq.c -- 使用转义字符 */ 
#include[b]<[/b]stdio.h[b]>[/b]
 
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 通常会引起一声[b]鸣响[/b]([b]\a[/b]),同时显示以下提示
Please enter your height: _____ cm
其中活跃位置(光标)在下划线的开端。活跃位置之所以会位于下划线的开端,是因为那八个[b]\b[/b] 把活跃位置后退了八个位置。顺带一题,下划线[b]_____[/b] 由五个[b]_[/b] 构成。[b]注意[/b]:一般来说,\b 不会擦除前面输出的字符,但是在某些系统,\b 却会擦除前面输出的字符,导致显示结果为[b]Please enter your height: [/b]。\a 产生的效果[b]取决于硬件[/b]。一般来说,输出 \a 会产生[b]鸣响[/b]。但是在某些系统,输出 \a 不会产生任何效果,或者仅仅显示一个特殊字符。
    输入一个数后(比如输入 180.5),屏幕的显示会变成
Please enter your height: 180.5 cm 
我们输入的数字取代了原来的下划线。接着我们需要按[b]回车[/b]确定我们的输入。按下回车键后,
活跃位置会移动到下一行的开端。 
       第二个 printf 运行结束后,屏幕显示如下:
 
    Please enter your height: 180.5 cm
    Oh!     Your height is 180.50.
这是因为[b]\t[/b] 使活跃位置向后移动了若干个位置(通常是八个),然后输出 [b]Your height is 180.50.[/b] 。接着[b]\r [/b]使活跃位置返回当前行的开端,然后输出[b]Oh! [/b], 最后[b]\n[/b] 引起换行。 
 
 
[b]加法运算符[/b]使它左右两边的值相加。例如:
 
printf("%d", 9[b]+[/b] 11);
 
输出结果为 20。加法运算符的操作数可以是常量,也可以是变量。例如:
 
var = var_1 + var_2;
 
这个语句先把 var_1 的值和 var_2 的值相加,然后把相加的结果赋值给 var。
[b] [/b]
[b] [/b]
[b]2. [/b][b]减法运算符(Subtraction Operator): –[/b]
 
[b]减法运算符[/b]导致左边的操作数减去右边的操作数。例如:
 
var = 100 – 40;
 
100 – 40 的值是 60,然后这个 60 被赋值给 var。
 
[b]加法运算符[/b]和[b]减法运算符[/b]被称为[b]二目运算符[/b]([b]binary operator[/b]),因为它们需要两个操作数。
 
 
[b]3. [/b][b]正负运算符(Sign Operator): – 和 +[/b]
 
例如:
 
var_1 = -5;
var_2 = -var_1;
var = +5
 
var_1 的值是 -5,var_2 的值是 5,var 的值是 5。
 
正负运算符被称为[b]单目运算符[/b]([b]unary operator[/b]),因为它们只需要一个操作数。
 
 
[b]23. 乘法运算符和除法运算符 [/b]
[b]1. 乘法运算符(Multiplication Operator):*[/b]
    * 是乘法运算符。以下语句:
        meter = 100 * cm;
常量 100 和变量 cm 相乘,乘积被赋值给变量 meter。
[b]2. 除法运算符(Division Operator):/[/b]
    C 使用[b]/[/b] 作为除法运算符。[b]/[/b] 左边的操作数除以右边的操作数。也就是说,[b]/[/b] 左边是被除数,右边是除数。例如:
        var = 6/2;
6 除以 2 得 3,然后 3 被赋值给变量 var。
    整数相除和浮点数相除有所不同。浮点数相除得到浮点数,整数相除得到整数。C 语言规定,整数相除产生的小数部分一律被抛弃,这就是所谓的截断truncation)。例如:7/4 的结果是 1,而不是 1.75,也不是 2。
    下面我们来看一个小程序。
        /* divide.c */         #include[b]<[/b]stdio.h[b]>[/b]
        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。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部