《C语言宝典》学习笔记(六):运算符

1       运算符

Turbo C的运算符非常丰富, 主要分为三大类: 算术运算符关系运算符与逻辑运算符, 按位运算符。除此之外, 还有一些用于完成特殊任务的运算符。

由于Turbo C中字符型数会自动地转换成整型数因此字符型数也可以参加二目运算。
   
例如
:
     main()
     {
          char m, n;     /*
定义字符型变量
*/
          m='c';         /*
m赋小写字母
'c'*/
          n=m+'A'-'a';   /*
c中的小写字母变成大写字母'C'后赋给
n*/
          ...
     }
   
上例中m='c'm=98, 由于字母AaASCII码值分别为6597这样可以将小写字母变成大写字母, 反之, 如果要将大写字母变成小写字母则用c+ 'a'-'A'进行计算。

x++(x--)++x(--x)没有什么区别, x=m++x=++m却有很大差别。
      x=m++   
表示将m的值赋给x, m1

      x=++m   
表示m先加1, 再将新值赋给x

1.1    数据类型转换

:
     main()
     {
          float f;
          int i=15;
          f=i/2;
     }
   
上面程序经运行后, f=7并不等于准确值7.5
正确的程序应该是:
     main()
     {
          float f;
          int i=15;
          f=i/2.0;
     }

Turbo Ctrue可以是不为0的任何值, false则为0 使用关系运算符和逻辑运算符表达式时, 若表达式为真(true)则返回1, 否则,表达式为假(false),则返回0

1.2    按位运算符

Turbo C和其它高级语言不同的是它完全支持按位运算符。这与汇编语言的位操作有些相似。Turbo C中按位运算符有:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

       
操作符                       作用

────────────────────────────
          &                       
位逻辑与

          |                       
位逻辑或

          ^                      
位逻辑异或

          -                       
位逻辑反

          >>                        
右移

          <<                        
左移

━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   
按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符型和整数型变量以及它们的变体, 对其它数据类型不适用。

   
关系运算和逻辑运算表达式的结果只能是10。而按位运算的结果可以取01以外的值。
    要注意区别按位运算符和逻辑运算符的不同, 例如, x=7, x&&8 的值为真(两个非零值相与仍为非零), x&8的值为0
   
移位运算符">>""<<"是指将变量中的每一位向右或向左移动, 其通常形式为
:
    
右移:     变量名>>移位的位数

    
左移:     变量名<<移位的位数

   
经过移位后, 一端的位被"挤掉",而另一端空出的位以0 填补,所以, Turbo C中的移位不是循环移动的。

 二、"&""*"运算符
    "&"
运算符是一个返回操作数地址的单目操作符。
    "*"
运算符是对"&"运算符的一个补充, 它返回位于这个地址内的变量值, 也是单目操作符。

    例如:
     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, 4559赋给y
 
四、sizeof运算符

    sizeof
运算符是一个单目运算符, 它返回变量或类型的字节长度。

例如:
        sizeof(double)
8
        sizeof(int)   
2
   
也可以求已定义的变量, 例如
:
        float f;
        int i;
        i=sizeof(f);
   
i的值将为4

1.3    Turbo C运算符的优先级

 Turbo C规定了运算符的优先次序即优先级。当一个表达式中有多个运算符参加运算时, 将按下表所规定的优先级进行运算。表中优先级从上往下逐渐降低,同一行优先级相同。
   
例如
:
      
表达式 10>4&&!(100<99)||3<=5 的值为
1
      
表达式 10>4&&!(100<99)&&3<=5 的值为0

               Turbo C运算符的优先次序
━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━
                   
表达式                              ┃优先级

────────────────────────────╂────
  ()(
小括号) [](数组下标) .(结构成员) ->(指针型结构成员)┃ 最高

────────────────────────────┃  ↑
!(
逻辑非) .(位取反) -(负号) ++(1) --(1) &(变量地址
)┃  │
────────────────────────────┃  │
   *(
指针所指内容)  type(函数说明)  sizeof(长度计算
)    ┃  │
────────────────────────────┃  │
     *(
)     /()     %(取模
)                        ┃  │
────────────────────────────┃  │
     +(
)     -(
)                                    ┃  │
────────────────────────────┃  │
     <<(
位左移)          >>(位右移
)                     ┃  │
────────────────────────────┃  │
     <(
小于)   <=(小于等于)   >(大于)   >=(大于等于
)    ┃  │
────────────────────────────┃  │
     ==(
等于)       !=(不等于
)                          ┃  │
────────────────────────────┃  │
     &(
位与
)                                            ┃  │
────────────────────────────┃  │
     ^(
位异或
)                                          ┃  │
────────────────────────────┃  │
     |(
位或
)                                            ┃  │
────────────────────────────┃  │
     &&(
逻辑与
)                                         ┃  │
────────────────────────────┃  │
     ||(
逻辑或
)                                         ┃  │
────────────────────────────┃  │
     ?:(?
表达式
)                                        ┃  │
────────────────────────────┃  │
     =    +=   -=(
联合操作
)                             ┃  │
────────────────────────────┃  │
     ,(
逗号运算符)                                      ┃ 最低

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值