标签: pre-increment

++ i或i ++ in for循环?

可能重复:
在C++中i ++和++ i之间是否存在性能差异?

是否有一些程序员++i在正常的for循环中写入而不是写入i++

c++ for-loop pre-increment post-increment

54
推荐指数
4
解决办法
10万
查看次数

表达式"j = ++(i | i);和j = ++(i&i);应该是左值误差?

我期待以下代码:

#include<stdio.h> 
int main(){
    int i = 10; 
    int j = 10;

    j = ++(i | i);
    printf("%d %d\n", j, i);

    j = ++(i & i);
    printf("%d %d\n", j, i);

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

表情j = ++(i | i);j = ++(i & i);会产生错误,左值如下:

x.c: In function ‘main’:
x.c:6: error: lvalue required as increment operand
x.c:9: error: lvalue required as increment operand   
Run Code Online (Sandbox Code Playgroud)

但我惊讶于上面的代码编译成功,如下所示:

~$ gcc x.c -Wall
~$ ./a.out 
11 11
12 12   
Run Code Online (Sandbox Code Playgroud)

检查上面的代码是否正常工作. …

c optimization gcc pre-increment gcc4.4

44
推荐指数
4
解决办法
3696
查看次数

递增时的字符串连接

这是我的代码:

$a = 5;
$b = &$a;
echo ++$a.$b++;
Run Code Online (Sandbox Code Playgroud)

不应该打印66?

为什么打印76?

php pre-increment post-increment

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

自我赋值中的后增量

我理解它们之间的区别i++ and ++i,但我不太清楚为什么我得到以下结果:

static void Main(string[] args)
{
    int c = 42;
    c = c++;
    Console.WriteLine(c);   //Output: 42
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,因为这是将变量赋值给自己然后递增值,我希望结果是43.然而,它正在回归42.使用时也得到相同的结果c = c--;.

我意识到我可以简单地使用c++;并完成它,但我更好奇它为什么表现得如此.谁能解释一下这里发生了什么?

c# pre-increment post-increment

35
推荐指数
3
解决办法
3977
查看次数

Java:增量/减量运算符的前缀/后缀?

从下面或这里的程序,为什么最后一次调用System.out.println(i)打印值7

class PrePostDemo {
     public static void main(String[] args){
          int i = 3;
          i++;
          System.out.println(i);    // "4"
          ++i;             
          System.out.println(i);    // "5"
          System.out.println(++i);  // "6"
          System.out.println(i++);  // "6"
          System.out.println(i);    // "7"
     }
}
Run Code Online (Sandbox Code Playgroud)

java pre-increment post-increment

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

为什么我不能用C-like语言做++ i ++?

半开玩笑地半开玩笑:为什么我不能++i++用C语言,特别是在C#中?

我希望它增加值,在我的表达式中使用它,然后再次递增.

c c# pre-increment post-increment

27
推荐指数
5
解决办法
5167
查看次数

数组中的预增量与后增量

我正在学习编程,我从C语言开始.我正在读我们的C书.我正在那本书中学习这个课程.

main( ) 
{ 
 int a[5] = { 5, 1, 15, 20, 25 } ; 
 int i, j, k = 1, m ; 
 i = ++a[1] ; 
 j = a[1]++ ; 
 m = a[i++] ; 
 printf ( "\n%d %d %d", i, j, m ) ; 
}
Run Code Online (Sandbox Code Playgroud)

我的理解是,它将打印i as 2,j as 1m as 15

但不知何故,它打印为 i as 3,j as 2m as 15?为什么会这样?

以下是我的理解 -

b = x++;
In this example suppose …
Run Code Online (Sandbox Code Playgroud)

c pre-increment post-increment

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

增量逻辑

我正试图深入了解post和pre incrementors,但是我对以下表达式有点困惑:

public static void main(String[] args) {
    int i = 0;
    i = i+=(++i + (i+=2 + --i) - ++i);
    // i = 0 + (++i + (i+=2 + --i) - ++i);
    // i = 0 + (1 + (3 + 2) - 1);
    // i = 0 + (6 - 1);
    System.out.println(i); // Prints 0 instead of 5
}
Run Code Online (Sandbox Code Playgroud)

我知道我在哪里错过了逻辑,但在哪里?

我尝试过的:

  • 从左到右(虽然我知道不推荐)
  • 从内部支架开始,从那里开始.

谢谢您的帮助

PS:评论是我的微积分的细节

编辑1

我试图将de hard编码值从表达式2改为其他东西,结果总是给出0

看看这个例子:

    int i = 0;
    i = …
Run Code Online (Sandbox Code Playgroud)

java logic pre-increment post-increment

21
推荐指数
2
解决办法
1285
查看次数

预增量运算符是否是线程安全的?

我正在用java制作一个相互竞争的汽车程序.每辆车都是一个单独的线程.

当汽车完成比赛时,每个人都称这种方法.我已经在不同的计时器速度下测试了该方法,它似乎工作正常.但我确实意识到每个线程都在访问变量carsComplete,有时是在同一时间(至少在date命令给我的范围内).

所以我的问题是:这个方法是线程安全的吗?

 public static String completeRace()
 {
      Date accessDate = new Date();
      System.out.println("Cars Complete: " + carsComplete + " Accessed at " + accessDate.toString());
      switch(++carsComplete)
      {
           case 1: return "1st";
           case 2: return "2nd";
           case 3: return "3rd";
           default: return carsComplete + "th";    
      }
 }
Run Code Online (Sandbox Code Playgroud)

java multithreading pre-increment

19
推荐指数
4
解决办法
8535
查看次数

C++中变量的多个预增量运算(C?)

为什么以下用C++编译?

int phew = 53;
++++++++++phew ;
Run Code Online (Sandbox Code Playgroud)

相同的代码在C中失败,为什么?

c c++ operators operator-precedence pre-increment

17
推荐指数
2
解决办法
2784
查看次数