收藏 分销(赏)

c语言运算符优先级.doc

上传人:xrp****65 文档编号:6271994 上传时间:2024-12-04 格式:DOC 页数:7 大小:37.50KB 下载积分:10 金币
下载 相关 举报
c语言运算符优先级.doc_第1页
第1页 / 共7页
c语言运算符优先级.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
c语言运算符优先级 c语言运算符优先级(一)              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(长度计算)        ────────────────────────────             *(乘)         /(除)         %(取模)                                   ────────────────────────────          +(加)         -(减)                                                  ────────────────────────────          <<(位左移)              >>(位右移)                               ────────────────────────────          <(小于)       <=(小于等于)       >(大于)       >=(大于等于)        ────────────────────────────          ==(等于)           !=(不等于)                                     ────────────────────────────          &(位与)                                                           ────────────────────────────          ^(位异或)                                                      ────────────────────────────          |(位或)                                                           ────────────────────────────          &&(逻辑与)                                                       ────────────────────────────          ||(逻辑或)                                                        ────────────────────────────          ?:(?表达式)                                                       ────────────────────────────          =        +=       -=(联合操作)                                       ────────────────────────────          ,(逗号运算符)                                            ┃ 最低 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ c语言运算符优先级(二) (1)先(括号)内层,后(括号)外层。 解释:有扩号时,最内层的括号中的东西先算,再一层层向外。 (2)先函数,后运算。 解释:式中有函数,例如sqrt(),fabs(),sin()之类,先算函数。 (3)先算术,后关系,再逻辑。 解释:逻辑表达式中,混有算术运算,要先算算术(加减乘除,函数)运算,再算关系(大小,等不等)运算。最后算逻辑(或与非),得到真假。 (4)先乘除,后加减。 解释:同算术一样,先做乘除,后做加减。 逻辑运算符“与”又叫逻辑乘,逻辑运算符“或”,又叫逻辑加,按先乘除,后加减,“与”比“或”优先。 (5)先左,后右 解释:同级运算,先做左边的,后做右边的。 (6)搞不清,加括号。 解释:自己写算术表达式和逻辑表达式时,搞不清运算符优先级,可以加括号,括号里的总是先。 c语言运算符优先级(三)       优先诀 括号成员第一;                      //括号运算符[] () ,成员运算符 .      -> 全体单目第二;                      //所有的单目运算符比如++      --      +(正)      -(负) ,指针运算 *      & 乘除余三,加减四;                  //这个"余"是指取余运算即% 移位五,关系六;                   //移位运算符 << >> ,关系 >      <      >=      <= 等 等于(与)不等排第七;             //即==      != 位与异或和位或;                   //这几个都是位运算: 位与(&)      异或(^)      位或(|)      "三分天下"八九十;   逻辑或跟与;                         //逻辑运算符: || 和 && 十二和十一;                         //注意顺序:优先级(||)      低于 优先级(&&) 条件高于赋值,                      //三目运算符优先级排到 13 位,只比赋值运算符和","高,需要注意的是赋值运算符很多! 逗号运算级最低!                   //逗号运算符优先级最低
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服