• C言语教程第二章: 数据典型、运算符、表达式(5)


    字符串常量
    字符串常量是由一对双引号括起的字符序列。比如: "CHINA" ,"C program:" , "$12.5" 等都是合理的字符串常量。字符串常量和字符常量是不合的量。它们之间主要有以下区别:
    1.字符常量由单引号括起来,字符串常量由双引号括起来。
    2.字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
    3.可以把一个字符常量授予一个字符变量,但不能把一个字符串常量授予一个字符变量。在C言语中没有相应的字符串变量。
    这是与BASIC 言语不合的。但是可以用一个字符数组来存放一个字符串常量。在数组一章内予以引见。
    4.字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。添加的一个字节中存放字符"\0"(ASCII码为0)。这是字符串终了的标记。比如,字符串 "C program"在内存中所占的字节为:C program\0。字符常量'a'和字符串常量"a"固然都只需一个字符,但在内存中的情景是不合的。
    'a'在内存中占一个字节,可显现为:a
    "a"在内存中占二个字节,可显现为:a\0标记常量

    标记常量
    在C言语中,可以用一个标识符来显现一个常量,称之为标记常量。标记常量在独霸之前必须先界说,其通俗办法为:
    #define 标识符 常量
    其中#define也是一条预处置饬令(预处置饬令都?quot;#"收尾),称为宏界说饬令(在第九章预处置递次中把进一步引见),其功用是把该标识符界说为厥后的常量值。一经界说,当前在递次中全数出现该标识符的地方均代之以该常量值。习惯上标记常量的标识符用年夜写字母,变量标识符用小写字母,以示区别。
    #define PI 3.14159
    void main()
    {
      float s,r;
      r=5;
      s=PI*r*r;
      printf("s=%f\n",s);
    }
    由宏界说饬令界说PI 为3.14159 s,r界说为实数 5->r PI*r*r->s
    表现递次了局 float s,r; r=5; s=PI*r*r; 本递次在主函数之前由宏界说饬令界说PI 为3.14159,在递次中即以该值替换PI 。s=PI*r*r等效于s=3.14159*r*r。应该留意的是,标记常量不是变量,它所代表的值在整个感染域内不能再改动。也就是说,在递次中,不能再用赋值语句对它从头赋值。

    变量的初值和典型转换

    变量赋初值
    在递次中经常需求对变量赋初值,以便独霸变量。言语递次中可有多种体式格式,在界说时赋以初值的体式格式,这种体式格式称为初始化。在变量阐发');中赋初值的通俗办法为:
    典型阐发');符 变量1= 值1,变量2= 值2,……; 比如:
    int a=b=c=5;
    float x=3.2,y=3f,z=0.75;
    char ch1='K',ch2='P';
    应留意,在阐发');中不睬会陆续赋值,如a=b=c=5是不合理的。
    void main()
    {
      int a=3,b,c=5;
      b=a c;
      printf("a=%d,b=%d,c=%d\n",a,b,c);
    }
    a<---3,b<--0,c<---5
    b<--a c
    表现递次运转了局

    变量典型的转换
    变量的数据典型是可以转换的。转换的体式格式有两种, 一种是主动转换,一种是逼迫转换。

    主动转换
    主动转换发作在不合数据典型的量殽杂运算时,由编译系统主动完成。主动转换依照以下规定礼貌:
    1.若介入运算量的典型不合,则先转换成同一典型,然后休止运算。
    2.转换按数据长度添加的方向休止,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再休止运算。
    3.全数的浮点运算都因此双精度休止的,即使仅含float单精怀抱运算的表达式,也要先转换成double型,再作运算。
    4.char型和short型介入运算时,必须先转换成int型。
    5.在赋值运算中,赋值号双方量的数据典型不合时, 赋值号左边量的典型把转换为左边量的典型。 如果左边量的数据典型长度左边永劫,把丢失一部门数据,这样会降低精度, 丢失的部门按四舍五入向前舍入。图21显现了典型主动转换的规定礼貌。
    void main()
    {
      float PI=3.14159;
      int s,r=5;
      s=r*r*PI;
      printf("s=%d\n",s);
    }
    PI<--3.14159
    s<--0,r<--5
    s<--r*r*PI
    表现递次运转了局
    float PI=3.14159;
    int s,r=5;
    s=r*r*PI;
    本例递次中,PI为实型;s,r为整型。在实施s=r*r*PI语句时,r和PI都转换成double型策画,了局也为double型。但由于s为整型,故赋值了局仍为整型,舍去了小数部门。


    版权声明: 原创作品,理会转载,转载时请务必以超链接办法标明文章 原始因由 、作者信息和本声明。否则将清查法律责任。

  • 相关阅读:
    Ajax请求参数解释
    下拉菜单:‘点击外面关闭’的解决方案
    nc
    telnet
    arping
    traceroute
    ping
    ss
    netstat
    ip
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975626.html
Copyright © 2020-2023  润新知