运算优先级问题

    xiaoxiao2021-04-11  33

    int i = f1() * f2();//f1()和f2()肯定会在乘号之前执行,可是我们并不知道先执行的是哪个

    cout<<i<<i++;//此时,并不知道先执行i++和是i 即称该表达式的行为是不可预知的

    只有四种运算符明确规定了运算对象的求值顺序 && || ?: 和 , (先左后右)

    求值顺序、优先级、结合律

    int i = f() + f1() * f2();// 优先级规定:f1()和f2()的返回值的乘积结合律规定:上述乘积与f()的结果相加而其中函数的调用顺序并没有规定 因此,如果这些函数影响同一对象,则它是一条错误的表达式,将产生未定义的结果 所以:拿不准的优先级最好用强制使用括号 如果改变了某个运算对象的值,在表达式的其他地方不要再使用这个运算对象

    一元运算符的优先级最高,接下来是乘除,最后是加减 解引用优先级别小于自增运算:(*p)++ *p++ 解引用优先级别小于点运算 *p.size()

    转载请注明原文地址: https://ju.6miu.com/read-666975.html

    最新回复(0)