Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java表达式中的后增量和预增量_Java_Expression_Variable Assignment_Increment - Fatal编程技术网

Java表达式中的后增量和预增量

Java表达式中的后增量和预增量,java,expression,variable-assignment,increment,Java,Expression,Variable Assignment,Increment,每个表达式的计算结果是什么?假设x在每一个之前是2 int num=x++*3 这等于(2)*3或num=6,x现在是3 num*=x num=2*2或4 (x1) 变为FALSE,因为(21)=true所以它是FALSE (++x

每个表达式的计算结果是什么?假设x在每一个之前是2


  • int num=x++*3
    这等于(2)*3或num=6,x现在是3

  • num*=x
    num=2*2或4

  • (x<2)和&(x>1)

    变为FALSE,因为(21)=true所以它是FALSE

  • (++x<2)|(x<1)


    (3在“break”是之前递增。基本上这是java做的第一件事(实际上括号仍然是第一件事)。因此在(++x<2)|(++x<3)如果不正确,第二个++x出现在第一个++x之后。

    是的,这些是一些非常基本的概念,请帮自己一个忙。下载unittest框架,就像jUnit一样。然后,您可以通过一些断言快速运行所有这些测试,这些断言将准确地显示正在发生的事情。另一种不用太多开销的方法是在控制台上打印出来

    int num = x++ * 3;
    System.out.println( "num=" + num );  // num=6
    

    int num=x++*3;
    =>OK:x=3,num=6
    num*=x;
    =>num的初始值是多少?如果num=2,那么您也可以。
    (x<2)和&(x>1)
    在x=2时为假,正常
    (++x<2)| |(x<1)
    在x=2时为false,也可以

    我记得我看过openJDK,特别是javac源代码中的
    Lower
    类,++x被翻译成x+=1,因此您可以将其看作:
    ((x+=1))<2)
    这是(没有类型转换):
    ((x=(x+1))<2)
    。第二个测试将具有较新的x值,即3,因为java从左到右计算条件

    num *= x;
    num =2*2 or 4
    
    我不知道你从哪里弄来的

    num*=x
    相当于
    num=num*x。如果num是6(来自上一条语句),那么它现在将是12(假设x仍然是2)

  • “假设
    x
    在每一个前面是2。”这是一个给定的假设还是你正在做的假设?我不相信你能做出这样的假设。我相信你已经按顺序评估了所有这些陈述
  • a*=b的展开形式是什么
  • 在第二条语句中,
    num
    的初始值是多少
  • 在上一条语句中,您正确地(假设初始条件正确)计算了
    (2+1)<1
    ,因为
    x
    已递增
  • 在每次陈述后跟踪
    x
    num
    的值,我想你会得到正确的答案


    祝你好运

    你说的是哪一个“休息”?第四个。由于预增量在第一个括号中(我确信它有一个特殊的名称),它会影响第二个括号中x的值比较吗?就像如果在AND或or语句的前半部分中x的值是预/后增量的,它会影响后半部分的值吗?为什么不自己尝试一下?-->这个问题可能会有所帮助:。我意识到在执行语句之前,它会在前半部分的x值上加一。让我试着用另一种方式来解释这一点:
    varx=2
    (x++<4)和&(x==2)
    第二条语句是真是假。我想知道预增量是否会影响整行的x值。@Chris:为什么不直接运行它?如果结果为
    false
    ,则第二条语句为
    false
    。如果为
    true
    ,则为
    true
    。这很容易找到。@Felix Kling:我对安装Eclipse或SDK的计算机没有管理员权限。尽管有人在网上发布了我现在正在使用的这个很酷的java runner。我以前从来没有这样做过,那么你怎么能返回OR语句的值而不写一个大的if-else呢?@fbernardo如果程序给我这个错误:“无法从结果类型为void的方法返回值”,这意味着该语句是false,对吗?或者这是否意味着某些东西实际上是错的?如果您声明了一个void方法(比如main),您就不能返回值。这就是void方法,一个不返回任何内容的方法。。。所以,这并不意味着它是对的或错的。在这种情况下,x在第一次求和后变成3,所以num将是18。这就是她给我的。我想她假设所有的程序都是独立的,x值初始化为2。我没有安装Eclipse或SDK的管理员权限。尽管有人在网上发布了我现在正在使用的这个很酷的java runner。