标签: increment

.increment vs + = 1

我有一个图片模型,其中包含视图计数(整数)的变量.每当有人查看Picture对象时,视图计数就会增加+1.

完成这项工作后,有什么区别

   @picture.view_count += 1
   @picture.save
Run Code Online (Sandbox Code Playgroud)

   @picture.increment(:view_count, 1)
Run Code Online (Sandbox Code Playgroud)

如果我使用增量,还是.save必要吗?

ruby ruby-on-rails increment

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

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万
查看次数

在sizeof(++ n)表达式中不调用Increment运算符

在C或C++中,当运算符在运算符中时,不执行递增和递减运算符(++n,--n)sizeof().

int n = 100;
int size_int = sizeof(++n);
std::cout<<n;
Run Code Online (Sandbox Code Playgroud)

我编写了这段代码并运行程序.当然,我认为101将会为我展示.但是,n不是101,它是100.

这是为什么?

c c++ increment sizeof

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

是否需要仅增量计数器的同步?

我使用整数作为计数器.整数只会增加,肯定会有多个线程同时增加它.在没有其他线程尝试访问其值时,在程序执行结束时读取此计数器的值.

我假设我不必为这种仅增量计数器使用锁或任何类型的同步.这是正确的吗?如果这有任何区别,我用Java编写代码.

java counter synchronization increment

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

Python字典增量

在Python中,在增加密钥之前必须首先检查密钥是否在字典中是很烦人的:

if key in my_dict:
  my_dict[key] += num
else:
  my_dict[key] = num
Run Code Online (Sandbox Code Playgroud)

以上四条线是否有较短的替代品?

python dictionary increment

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

什么时候++不会产生与+1相同的结果?

以下两个C#代码片段产生不同的结果(假设在递归调用之前和之后都使用变量级别).为什么?

public DoStuff(int level)
{
  // ...
  DoStuff(level++);
  // ...
}
Run Code Online (Sandbox Code Playgroud)

,

public DoStuff(int level)
{
  // ...
  DoStuff(level+1);
  // ...
}
Run Code Online (Sandbox Code Playgroud)

在阅读了下面的一些回复后,我认为值得发布级别++,++级别和级别+ 1的堆栈跟踪以突出显示欺骗这个问题的方式.

我已经为这篇文章简化了它们.递归调用序列以DoStuff(1)开始.

// level ++

DoStuff(int level = 1)
DoStuff(int level = 2)
DoStuff(int level = 2)
DoStuff(int level = 2)
Run Code Online (Sandbox Code Playgroud)

// ++级别

DoStuff(int level = 4)
DoStuff(int level = 4)
DoStuff(int level = 3)
DoStuff(int level = 2)
Run Code Online (Sandbox Code Playgroud)

// level + 1

DoStuff(int level = 4)
DoStuff(int level = 3)
DoStuff(int level = 2)
DoStuff(int level …
Run Code Online (Sandbox Code Playgroud)

c# stack increment

27
推荐指数
4
解决办法
2075
查看次数

如何增加或减少Common Lisp中的数字?

增加/减少数字和/或数字变量的惯用 Common Lisp方法是什么?

lisp common-lisp increment decrement

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

如何在PHP For循环中将数字增加2

以下是我的代码的简化版本:

<?php for($n=1; $n<=8; $n++): ?>
    <p><?php echo $n; ?></p>
    <p><?php echo $n; ?></p>
<?php endfor; ?>
Run Code Online (Sandbox Code Playgroud)

我希望循环运行8次,我希望第一段中的数字在每个循环中增加1,例如

1, 2, 3, 4, 5, 6, 7, 8 (这显然很简单)

但是,我希望第二段中的数字在每个循环中增加2,例如..

1, 3, 5, 7, 9, 11, 13, 15

我无法弄清楚如何使每个循环使第二段中的数字增加2.如果我将其更改为$ n ++然后它会增加2,但它会使循环仅运行4次而不是8次.

任何帮助将非常感激.谢谢!

php for-loop increment

26
推荐指数
2
解决办法
9万
查看次数

将增量/减量运算符放在三元/条件运算符中是否安全?

这是一个例子

#include <iostream>
using namespace std;
int main()
{   
    int x = 0;
    cout << (x == 0 ? x++ : x) << endl; //operator in branch
    cout << "x=" << x << endl;
    cout << (x == 1 || --x == 0 ? 1 : 2) << endl; //operator in condition
    cout << "x=" << x << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

0
x=1
1
x=1
Run Code Online (Sandbox Code Playgroud)

我理解输出,但这是不确定的行为?在任何一种情况下,评估顺序是否得到保证?

即使有保证,我也非常清楚使用递增/递减会很快成为可读性的问题.我只是问我看到类似的代码并且立即不确定,因为有很多关于递增/递减运算符的模糊/未定义使用的示例,例如......

c c++ increment ternary-operator decrement

26
推荐指数
3
解决办法
4436
查看次数

INC指令与ADD 1:重要吗?

来自Ira Baxter回答,为什么INC和DEC指令不会影响进位标志(CF)?

大多数情况下,我远离INCDEC现在,因为他们做的部分条件代码更新,这样就可以在管道中引起滑稽的摊位,和ADD/ SUB没有.因此,无关紧要(大多数地方),我使用ADD/ SUB避免失速.我使用INC/ DEC仅在保持代码较小的情况下,例如,适合高速缓存行,其中一个或两个指令的大小产生足够的差异.这可能是毫无意义的纳米[字面意思!] - 优化,但我在编码习惯上相当老派.

我想问一下为什么它会导致管道中的停顿,而添加不会?毕竟,无论是ADDINC更新标志寄存器.唯一的区别是INC不更新CF.但为什么重要呢?

performance x86 assembly increment micro-optimization

26
推荐指数
2
解决办法
4234
查看次数