暂无 |

有关运算符的有趣问题

  1. 优先级和关联性当涉及到具有多个运算符的方程的混合方程时,经常会出现混淆。问题是首先要解决哪个部分。在这些情况下有一条金科玉律。如果运营商具有不同的优先级,则首先解决更高的优先级。如果它们具有相同的优先级,则根据关联性来解决,即从右到左或从左到右。以下程序的解释完全在程序本身的注释中编写。
    public class operators 
    {
        public static void main(String[] args) 
        {
            int a = 20, b = 10, c = 0, d = 20, e = 40, f = 30;
            
            // precedence rules for arithmetic operators.
            // (* = / = %) > (+ = -)
            // prints a+(b/d)
            System.out.println("a+b/d = "+(a + b / d));
    
            // if same precendence then associative
            // rules are followed.
            // e/f -> b*d -> a+(b*d) -> a+(b*d)-(e/f)
            System.out.println("a+b*d-e/f = "+(a + b * d - e / f));
        }
    }
    

    输出:

    a + b / d = 20
    a + b * de / f = 219
    
  2. 成为编译器:我们系统中的编译器使用lex工具来匹配生成令牌时的最大匹配。这会造成一些问题,如果忽略。例如,考虑语句a = b +++ c; ,对许多读者来说,这似乎会造成编译器错误。但是这个陈述是绝对正确的,因为由lex创建的标记是a,=,b,++,+,c。因此,这种说法具有类似的效果,首先将b + c分配给a,然后将b递增。同样,a = b +++++ c; 当生成的令牌是a,=,b,++,++,+,c时会产生错误。这实际上是一个错误,因为在第二个一元操作数之后没有操作数。
    public class operators 
    {
        public static void main(String[] args) 
        {
            int a = 20, b = 10, c = 0;
    
            // a=b+++c is compiled as
            // b++ +c
            // a=b+c then b=b+1
            a = b+++c;
            System.out.println("Value of a(b+c),b(b+1),c = " + a + "," + b + "," + c);
    
            // a=b+++++c is compiled as
            // b++ ++ +c
            // which gives error.
            // a=b+++++c;
            // System.out.println(b+++++c);
        }
    }
    

    输出:

    Value of a(b+c),b(b+1),c = 10,11,0

  3. 使用+ over():在system.out.println()中使用+运算符时,请确保添加括号。如果我们在添加之前编写了一些东西,那么会发生字符串添加,即添加的相关性从左到右,因此整数会先添加到字符串中以产生字符串,而字符串对象会在使用+时连接,因此可能会产生不需要的结果。
    public class operators 
    {
        public static void main(String[] args) 
        {
    
            int x = 5, y = 8;
    
            // concatenates x and y
            // as first x is added to "concatenation (x+y) = "
            // producing "concatenation (x+y) = 5" and then 8 is
            // further concatenated.
            System.out.println("Concatenation (x+y)= " + x + y);
    
            // addition of x and y
            System.out.println("Addition (x+y) = " + (x + y));
    
        }
    }
    

    输出:

    Concatenation (x+y)= 58
    Addition (x+y) = 13
    
java教程
php教程
php+mysql教程
ThinkPHP教程
MySQL
C语言
css
javascript
Django教程

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论