我没有面临任何问题。这个问题是关于C语言的
假设我有一个函数:

int func()
{
    static int i = 1;
    return(i++);
}

现在,我不想做i++i+=1),我想做i *= 42;,但仍然返回乘法前的值。
我想知道是否有一种方法可以像i++那样工作(在一个表达式中,取i的值,然后再做i *= 42)。

最佳答案

Postfix++--是唯一修改对象并产生该对象以前值的C运算符。如果您想对除递增或递减1以外的任何值执行此操作,则必须将上一个值存储在临时值中。
如果要设计自己的语言,可以实现一个“反逗号”运算符,该运算符生成左操作数,而不是右操作数。(现有逗号运算符计算其左操作数,然后计算其右操作数,然后产生右操作数的值)。
例如,如果“反向逗号”拼写为,,,则可以执行以下操作:

return i ,, i *= 42; /* THIS IS NOT C */

关于c - 与i++相同,但操作更复杂,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24966802/

10-11 22:40
查看更多