湖州做网站公司哪家好,网站加载速度影响因素,app开发免费,网站内容避免被采集结合性和优先级和副作用 1.优先级2.结合性3.副作用4.简单区分i#xff0c;i#xff0c;i1#xff1b;ii1#xff1b;ii 1.优先级
优先级指的是#xff0c;如果⼀个表达式包含多个运算符#xff0c;哪个运算符应该优先执⾏。各种运算符的优先级是 不⼀样的。 在C语言中ii1ii1ii 1.优先级
优先级指的是如果⼀个表达式包含多个运算符哪个运算符应该优先执⾏。各种运算符的优先级是 不⼀样的。 在C语言中优先性和结合性规则是非常重要的。然而C语言有几乎50中运算符因此去费心记住不实际当有疑问的时候我们要通过查表或者使用足够多的圆括号 当然我们应该记得一些常用的优先级比如后缀自增自减符号优先级最高前缀自增自减符号和一元正负符号次之赋值符号优先级最低等等
2.结合性
如果两个或两个以上运算符优先级相同优先级没办法确定先计算哪个了这时候就看结合性了则根据运算符 是左结合还是右结合决定执⾏顺序。⼤部分运算符是左结合从左到右执⾏少数运算符是右 结合从右到左执⾏⽐如赋值运算符 。 值得大家注意的是往往初学结合性的同学往往会将数学上的知识误入到C语言学习中如abcd有些会认为加的时候从左向右加。结合性不是如此此时表达式中只有一个运算符因此这里并没有结合性 那么教大家一个非常简单区分结合性的方法如“abc”观察表达式有两个运算符优先级相同且都是左结合行的我们就找到最右边的运算符将该运算符的左边括起来也就是“abc”右结合性同理 例子 a*-b/c-b 先找优先级一元-的优先级最高 a*(-b)/c-b 其次乘除 a*(-b)/c-b 然后找结合性乘除都是左结合性的找到最后边的运算符/将左边的括起来 a*(-b)/c-b 结束 尽管编译器能很轻松的识别出优先级和结合性但是人不行。为了代码的可读性希望大写代码的时候适当加上圆括号
3.副作用
通常不希望运算符修改他们的操作数因为数学中的运算符就是如此。但当我们使用赋值运算符包括简单赋值和复合赋值还有自增自减运算符 连续的简单赋值可能会导致数据的丢失。如果以上错误可以通过统一数据类型解决那以下程序就是灾难了 在面对C语言未定义的行为我们是不是应该不在此引起歧义。我知道大家都是很优秀的程序员通过寥寥几行代码就可以完成复杂的程序但往往可能代码过分的省略不见得是好事因此我们将赋值语句拆开来写而不是一起放在一个表达式中
复合赋值介绍 有些同学可能会将ve等价于vve首先是优先级的问题赋值运算符的优先级十分低因此v/jk和vv/jk完成不同前者等于vv/jk 同时在极少数时候由于副作用 ij和iij后者进行了两次自增前面只进行了一次自增 下面例子 i1 ji i由优先级可得 jii执行完该条语句之后i应该自增了两次但是这两次自增是同时自增还是其中一个i先自行自增之后然后另一个再自增两者的差别会导致j值得完全不同
1.jiiii2.ji然后i自增了i1后者i自增i
4.简单区分iii1ii1ii
在没有赋值的情况下i等同与1。如果有赋值的情况下i先赋值再自增i先自增再赋值 i1与i完全相同都是自增 ii1就是简单的操作数加法 ii涉及到自增和赋值运算先赋值ii再自增此时i会被覆盖 以上就是结合性和优先级的内容希望大家平时写代码的时候多多注意减少未定义的行为出现