当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机等级考试二级C语言基础教程:数据类型、变量和运算符(4)
发布时间:2010/11/2 16:25:06 来源:城市学习网 编辑:ziteng
  三、赋值语句中的数据类型转换
  类型转换是指不同类型的变量混用时的类型改变。
  在赋值语句中, 类型转换规则是:
  等号右边的值转换为等号左边变量所属的类型。
  例如:
  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中的移位不是循环移动的。 [NextPage]   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(长度计算)        ┃ │
  ────────────────────────────┃ │
  *(乘) /(除) %(取模)                    ┃ │
  ────────────────────────────┃ │
  +(加) -(减)                        ┃ │
  ────────────────────────────┃ │
  <<(位左移) >>(位右移)                  ┃ │
  ────────────────────────────┃ │
  <(小于) <=(小于等于) >(大于) >=(大于等于)        ┃ │
  ────────────────────────────┃ │
  ==(等于) !=(不等于)                   ┃ │
  ────────────────────────────┃ │
  &(位与)                         ┃ │
  ────────────────────────────┃ │
  ^(位异或)                        ┃ │
  ────────────────────────────┃ │
  |(位或)                          ┃ │
  ────────────────────────────┃ │
  &&(逻辑与)                          ┃ │
  ────────────────────────────┃ │
  ||(逻辑或)                        ┃ │
  ────────────────────────────┃ │
  ?:(?表达式)                          ┃ │
  ────────────────────────────┃ │
  = += -=(联合操作)                   ┃ │
  ────────────────────────────┃ │
  ,(逗号运算符)                       ┃ 最低
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved