相关疑难解决方法(0)

"x = x ++"之后的x是什么?

执行此操作后会发生什么(窗帘后面)?

int x = 7;
x = x++;
Run Code Online (Sandbox Code Playgroud)

也就是说,当一个变量后期递增并在一个语句中赋值给自己时?我编译并执行了这个.在整个声明之后x仍然是7 .在我的书中,它说增加了!x

java operators post-increment

273
推荐指数
11
解决办法
4万
查看次数

i = i ++不会增加i.为什么?

可能重复:
为什么会进入无限循环?

类似于i = i++C和C++中的未定义行为,因为标量对象的值在同一表达式中更改两次而没有插入序列点.

但是我认为这些表达式在C#或Java中具有明确定义的行为,因为AFAIK对参数的评估从左到右,并且全部都有序列点.

那就是说,我希望i = i++相当于i++.但事实并非如此.以下程序输出0.

using System;
class Program
{
    static void Main(string[] args)
    {
        int i = 0;
        i = i++;
        Console.WriteLine(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

你能帮我理解为什么吗?

免责声明: 我完全清楚,无论是否定义了上述结构的行为,它们都是愚蠢,无用,不可读,不必要的,不应在代码中使用.我只是好奇.

c# increment

31
推荐指数
4
解决办法
1万
查看次数

为什么这会导致无限循环

考虑这个简单的代码:

 // E1 
  public void doTest(String pattern) {
    int counter = 0;

    while (counter < 3) {
        counter = counter++;
    }
    System.out.println("Done");
}
Run Code Online (Sandbox Code Playgroud)

这会导致无限循环.

但是,如果增加计数器的语句是这样写的:

E2.  counter = ++counter;
Run Code Online (Sandbox Code Playgroud)

或这个

E3.    counter++;
Run Code Online (Sandbox Code Playgroud)

它正常终止.我理解增量发生在失败的版本中的赋值之后,这解释了为什么E2工作,但我认为java分配了变量的增量结果,如E3中那样递增.所以我很困惑为什么E1失败但E3没有.

java post-increment

5
推荐指数
1
解决办法
1106
查看次数

C#增量运算符(++)问题:为什么输出错误?

我有一个简单的c#控制台应用程序,但我输错了为什么?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication11
{
class Program
{
    static void Main(string[] args)
    {
        int i = 100;
        for (int n = 0; n < 100; n++)
        {
            i = i++;
        }
        Console.WriteLine(i);
    }

}
}
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
3
解决办法
7864
查看次数

为什么输出为0?

class T {
    public static void main(String args[]) {
        int x = 0;
        x = x++;
        System.out.println(x);
    }
}
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
182
查看次数

2
推荐指数
1
解决办法
146
查看次数

Java中的算术运算符(初学者问题)

我知道数组运算符具有优先权.然后是二元关节运算符*,/,%.然后+和 - 它们优先级低.

但我很困惑,在这个例子中,java将首先解决哪个问题.如果我们有2个运算符具有相同的优先级,那么首先在java中使用哪个运算符?

谢谢.

int x = y = -2 + 5 * 7 - 7 / 2 % 5;
Run Code Online (Sandbox Code Playgroud)

如果有人能为我解决这个问题,请逐一向我解释.因为这总是让我对考试感到困惑.

java math operators

2
推荐指数
1
解决办法
3万
查看次数

x--或x ++在这里做什么?

对于大多数人来说,这是一个愚蠢的问题 - 我知道 - 但我是这里的初学者之一,我无法理解为什么这里的输出是12(x--这对于结果做了什么)?

int x, y;
x = 7;
x-- ;
y = x * 2;
x = 3;
Run Code Online (Sandbox Code Playgroud)

java

1
推荐指数
3
解决办法
3万
查看次数

发布增量问题

可能重复:
为什么这会进入无限循环?

public class loop
{

    public static void main(String[] args)
    {
        int k=0;
        for (int i = 0; i < 6; i++) 
        {
            k = k++;
            System.out.println(k);            
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

出局:

0
0
0
0
0
0
Run Code Online (Sandbox Code Playgroud)

你能解释一下为什么上面产生的零甚至是递增k值并将其赋值给k.

java

1
推荐指数
1
解决办法
752
查看次数

计算字母和空格

我需要在一些字符串中计算字母和空格.输出是我的字符串

我试过这个:

    for (int i = 0; i < output.length(); i++) {
        if (output.charAt(i) != ' ') {
            letters = letters++;
        } //counting spaces
        else {
            spaces = spaces++;
        }
Run Code Online (Sandbox Code Playgroud)

它不起作用.我得到0个字母和0个空格.我想我需要一些代码'',对吧?

java

1
推荐指数
1
解决办法
162
查看次数

来自while循环Java的意外输出

这是我无法理解的行为.

class loop1 {
    public static void main(String args[]) {
        int i = 10;

        do
            while(i++ < 15) {
                System.out.println(i);
                i = i + 20;
                System.out.println(i);
            } 
        while(i<2);

        System.out.println(i);    
    }

}
Run Code Online (Sandbox Code Playgroud)

我希望它能打印出来

11
31
31
Run Code Online (Sandbox Code Playgroud)

但它打印

11
31
32
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么这个"32"出现在输出中.

这是我对流程的理解

  • 我= 10
  • 在while循环中,由于一元增量,它变为11,所以这解释了第一个输出
  • 11增加到31(+20)
  • 然后31 <15应该失败(在下一次迭代期间),所以它应该进入最后一个打印语句并打印31,但它改为打印32.

有人能告诉我我错过了什么吗?

java

1
推荐指数
1
解决办法
184
查看次数

为什么程序在循环时跳过

为什么我的程序跳过while循环?

class DigitRepeat
{
  public static void main(String args[])
  {
      int n=133,dig=3,digit,count=0;

      while(n!=0)
      {
         digit=n%10;
         if(dig==digit)
         {
            count=count++;
         }
         n=n/10;
      }

      if(count==0)
          System.out.println("digit not found");
      else
          System.out.println("digit occurs "+count+" times.");
  }
}
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
2
解决办法
1361
查看次数

为什么这段代码会进入无限循环?

请考虑以下代码:

public class Game {

    public static void main(String[] args) {

        int x = 0;
        while (x < 1) {
          x = x++;
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

使用我的编译器,这段代码进入无限循环,但为什么呢?

首先,我们把价值xx,而只有那么我们就加1 x,之后我会想到1 < 1会是假的,while循环将终止...

但不,那不会发生.

那么无限循环可能是什么原因呢?

java loops while-loop

0
推荐指数
1
解决办法
114
查看次数

标签 统计

java ×11

c# ×2

operators ×2

post-increment ×2

increment ×1

loops ×1

math ×1

while-loop ×1