首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 程序开发 > C/C#/C++ > 正文
  • 5.Turbo C语言运算符
      2007-2-25  来源:网络资源  编辑:Jsbulo  热度:

    Turbo C的运算符非常丰富, 主要分为三大类: 算术运算符, 关系运算符与逻辑运算符, 按位运算符。除此之外, 还有一些用于完成特殊任务的运算符。下面分别进行介绍。
     
    5.1 算术运算符
    Turbo C的算术运算符如下:
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    操作符 作用
    ────────────────────────────
    + 加, 一目取正
    - 减, 一目取负
    * 乘
    / 除
    % 取模
    -- 减1
    ++ 加1
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     

    一、一目和二目操作
    一目操作是指对一个操作数进行操作。例如: -a是对a进行一目负操作。
    二目操作(或多目操作)是指两个操作数(或多个操作数)进行操作。
    在Turbo C中加、减、乘、除、取模的运算与其它高级语言相同。需要注意的是除法和取模运算。
    例如:
    15/2 是15除以2商的整数部分7
    15%2 是15除以2的余数部分1
    对于取模运算符"%", 不能用于浮点数。
    另外, 由于Turbo C中字符型数会自动地转换成整型数, 因此字符型数也可以参加二目运算。
    例如:
    main()
    {
    char m, n; /*定义字符型变量*/
    m=’c’; /*给m赋小写字母’c’*/
    n=m+’A’-’a’; /*将c中的小写字母变成大写字母’B’后赋给n*/
    ...
    }
    上例中m=’c’即m=98, 由于字母A和a的ASCII码值分别为65和97。这样可以将小写字母变成大写字母, 反之, 如果要将大写字母变成小写字母, 则用c+ ’a’-’A’进行计算。
     

    二、增量运算
    在Turbo C中有两个很有用的运算符, 在其它高级语言中通常没有。这两个运算符就是增1和减1运算符"++"和"--", 运算符"++"是操作数加1, 而"--" 则是操作数减1。
    例如:
    x=x+1 可写成x++, 或++x
    x=x-1 可写成x--, 或--x
    x++(x--)与++x(--x)在上例中没有什么区别, 但x=m++和x=++m却有很大差别。
    x=m++ 表示将m的值赋给x后, m加1。
    x=++m 表示m先加1后, 再将新值赋给x。
     

    三、赋值语句中的数据类型转换
    类型转换是指不同类型的变量混用时的类型改变。
    在赋值语句中, 类型转换规则是:
    等号右边的值转换为等号左边变量所属的类型。
    例如:
    main()
    {
    int i, j; /*定义整型变量*/
    float f, g=2.58; /*定义浮点型变量*/
    f=i*j; /*i与j的乘积是整型数, 被转换成为浮点数赋给f*/
    i=g; /*g中的浮点型数转换成为整型数赋给i*/
    ...
    }
    由于Turbo C按上述数据类型转换规则, 因此在作除法运算时应特别注意。
    例如:
    main()
    {
    float f;
    int i=15;
    f=i/2;
    }
    上面程序经运行后, f=7并不等于准确值7.5。正确的程序应该是:
    main()
    {
    float f;
    int i=15;
    f=i/2.0;
    }
    也可直接将i定义为浮点数。
     

    5.2 关系运算符和逻辑运算符
    一、逻辑运算符
    逻辑运算符是指用形式逻辑原则来建立数值间关系的符号。
    Turbo C的逻辑运算符如下:
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    操作符 作用
    ─────────────────────────────
    && 逻辑与
       逻辑或
    ! 逻辑非
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     

    二、关系运算符
    关系运算符是比较两个操作数大小的符号。
    Turbo C的关系运算符如下:
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    操作符 作用
    ─────────────────────────────
    > 大于
    >= 大于等于
    < 小于
    <= 小于等于
    == 等于
    != 不等于
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    关系运算符和逻辑运算符的关键是真(true)和假(false)的概念。Turbo C中true可以是不为0的任何值, 而false则为0。 使用关系运算符和逻辑运算符表达式时, 若表达式为真(即true)则返回1, 否则, 表达式为假(即false), 则返回0。
    例如:
    100>99 返回1
    10>(2+10) 返回0
    !1&&0 返加0
    对上例中表达式!1&&0, 先求!1和先求1&&0将会等于出不同的结果, 那么何者优先呢? 这在Turbo C中是有规定的。 有关运算符的优先级本节后面将会讲到。

    5.3 按位运算符
    Turbo C和其它高级语言不同的是它完全支持按位运算符。这与汇编语言的位操作有些相似。
    Turbo C中按位运算符有:
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    操作符 作用
    ────────────────────────────
    & 位逻辑与
      位逻辑或
    ^ 位逻辑异或
    - 位逻辑反
    >> 右移
    << 左移
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符型和整数型变量以及它们的变体, 对其它数据类型不适用。
    关系运算和逻辑运算表达式的结果只能是1或0。 而按位运算的结果可以取0或1以外的值。
    要注意区别按位运算符和逻辑运算符的不同, 例如, 若x=7, 则x&&8 的值为真(两个非零值相与仍为非零), 而x&8的值为0。
    移位运算符">>"和"<<"是指将变量中的每一位向右或向左移动, 其通常形式为:
    右移: 变量名>>移位的位数
    左移: 变量名<<移位的位数
    经过移位后, 一端的位被"挤掉", 而另一端空出的位以0 填补, 所以,Turbo C中的移位不是循环移动的。
    5.4 Turbo C的特殊运算符
    一、"?"运算符
    "?"运算符是一个三目运算符, 其一般形式是:
    <表达式1>?<表达式2>:<表达式3>;
    "?"运算符的含义是: 先求表达式1的值, 如果为真, 则求表达式2 的值并把它作为整个表达式的值; 如果表达式1 的值为假, 则求表达式3 的值并把它作为整个表达式的值。
    例如:
    main()
    {
    int x, y;
    x=50;
    y=x>70?100:0;
    }
    本例中, y将被赋值0。如果x=80, y将被赋值100。
    因此, "?"运算符可以代替某些if-then-else形式的语句。
     

    二、"&"和"*"运算符
    "&"运算符是一个返回操作数地址的单目操作符。
    "*"运算符是对"&"运算符的一个补充, 它返回位于这个地址内的变量值, 也是单目操作符。
    例如:
    main()
    {
    int i, j, *m;
    i=10;
    m=&i; /*将变量i的地址赋给m*/
    j=*m; /*地址m所指的单元的值赋给j*/
    }
    上面程序运行后, i=10, m为其对应的内存地址, j的值也为10。
     

    三、","运算符
    ","运算符用于将多个表达式串在一起, ","运算符的左边总不返回, 右边表达式的值才是整个表达式的值。
    例如:
    main()
    {
    int x, y;
    x=50;
    y=(x=x-5, x/5);
    }
    上面程序执行后y值为9, 因为x的初始值为50, 减5后变为45, 45除5为9赋给y。

     

    四、sizeof运算符
    sizeof运算符是一个单目运算符, 它返回变量或类型的字节长度。
    例如:
    sizeof(double) 为8
    sizeof(int) 为2
    也可以求已定义的变量, 例如:
    float f;
    int i;
    i=sizeof(f);
    则i的值将为4。
     

    五、联合操作
    Turbo C中有一特殊的简写方式, 它用来简化一种赋值语句, 适用于所有的双目运算符。其一般形式为:
    <变量>=<变量><操作数><表达式>
    相当于
    <变量><操作数>=<表达式>
    例如:
    a=a+b 可写成 a+=b
    a=a&b 可写成 a&=b
    a=a/(b-c) 可写成 a/=b-c
    5.5 Turbo C运算符的优先级
    Turbo C规定了运算符的优先次序即优先级。 当一个表达式中有多个运算符参加运算时, 将按下表所规定的优先级进行运算。表中优先级从上往下逐渐降低,同一行优先级相同。
    例如:
    表达式 10>4&&!(100<99)  3<=5 的值为1
    表达式 10>4&&!(100<99)&&3<=5 的值为0
     

    Turbo C运算符的优先次序
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━
    表达式 ┃优先级
    ────────────────────────────╂────
    ()(小括号) [](数组下标) .(结构成员) ->(指针型结构成员)┃ 最高
    ────────────────────────────┃ ↑
    !(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变量地址)┃ │
    ────────────────────────────┃ │
    *(指针所指内容) type(函数说明) sizeof(长度计算) ┃ │
    ────────────────────────────┃ │
    *(乘) /(除) %(取模) ┃ │
    ────────────────────────────┃ │
    +(加) -(减) ┃ │
    ────────────────────────────┃ │
    <<(位左移) >>(位右移) ┃ │
    ────────────────────────────┃ │
    <(小于) <=(小于等于) >(大于) >=(大于等于) ┃ │
    ────────────────────────────┃ │
    ==(等于) !=(不等于) ┃ │
    ────────────────────────────┃ │
    &(位与) ┃ │
    ────────────────────────────┃ │
    ^(位异或) ┃ │
    ────────────────────────────┃ │
     (位或) ┃ │
    ────────────────────────────┃ │
    &&(逻辑与) ┃ │
    ────────────────────────────┃ │
      (逻辑或) ┃ │
    ────────────────────────────┃ │
    ?:(?表达式) ┃ │
    ────────────────────────────┃ │
    = += -=(联合操作) ┃ │
    ────────────────────────────┃ │
    ,(逗号运算符) ┃ 最低
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━