这是一个示例练习。我想弄明白,但我总是得到错误的答案。假设用户在第一个提示输入1 3 5,在第二个提示输入1.5 2.0 2.5。
// Problem6
import.java import java.util.Scanner;
class problem2{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a, b, c;
double x, y, z;
System.out.print("Enter three integers: ");
a = sc.nextInt();
b = sc.nextInt();
c = sc.nextInt();
System.out.print("Enter three doubles: ");
x = sc.nextDouble();
y = sc.nextDouble();
z = sc.nextDouble();
a = (++c)-(b++);
x += (z-y);
b *= b;
y = c*z;
c = (int)(b-x);
System.out.println("a=" + a + ", b=" + b + ", c=" + c);
System.out.println("x=" + x + ", y=" + y + ", z=" + z);
System.out.println("c/a=" + c/a);
System.out.println("c%a=" + c%a);
}
}
输出:
c%a = 2
请帮忙!我真的需要 具体来说,我不明白a = 3和b = 16。 我不明白a =(++ c) - (b ++)
答案 0 :(得分:6)
此
a = (++c)-(b++);
与
基本相同 c = c + 1; // pre-increment.
a = c - b;
b = b + 1; // post increment.
答案 1 :(得分:2)
a = (++c)-(b++);
表示a
等于increased c
(即6)减去b (increase after this line)
,在此行中为3,但接下来将为4。所以a = 6-3 = 3
和b = 4 * 4 = 16
。
答案 2 :(得分:1)
a = (++c) - (b++)
表示a = (c=c+1)-b; b = b+1;
前缀(++)意味着我们要先改变变量然后再使用它,后缀意味着首先我们添加b,然后改变它的值。 What is the difference between prefix and postfix operators?
答案 3 :(得分:1)
表达式a = (++c) - (b++)
:
首先,c
增加1,然后在表达式中使用,而b
在表达式中使用,然后递增。因此a
被评估为6-3=3
。
答案 4 :(得分:1)
一元运算符++可以放在变量之前或之后。
将它放在之前意味着“在评估此表达式之前递增1”并将其置之后表示“在评估此表达式后递增1”。
所以,如果我说(伪代码):
a = 5
print ++a
那会产生:
6
因为增量在传递到打印之前发生。但是,如果我这样做了:
a = 5
print a++
print a
输出结果为:
5
6
随着增量在传递到打印后发生。
所以++ c的计算结果为5 + 1 = 6,而b ++的计算结果为3(b的初始值)。含义(++ c) - (b ++)的计算结果为3。
答案 5 :(得分:0)
a =(++ c) - (b ++)
++ c是一个preincrement,这意味着你在进行计算之前先加1 b ++是一个后增量,因此在进行计算后将其加1:
所以公式意味着:
a等于(c加1)减去b。然后将1添加到b。
答案 6 :(得分:0)
根据您的输入,a = 1, b = 3, c=5
a = (++c)-(b++)
评估为:
c
设为5 + 1
并将值返回为6
3
,现在将b
设为3 + 1
a
设为6
- 3
给3
b * = b,此处已为4
,因此4 * 4
为16
答案 7 :(得分:0)
Post Increment(n ++):首先执行语句,然后将值增加一。
Pre Increment(++ n):首先将值增加1然后执行语句。
例如
int a = 8,i;
i = ++ a + ++ a + a ++; //答案:i = 9 + 10 + 10 = 20然后a = 8
将完成所有预增量,然后执行数学表达式,最后将完成后增量。
a =(++ c) - (b ++);
所以这里首先“c”将递增,然后“b”将被减去,结果将保存在“a”中,然后“b”将递增。