【发布时间】:2022-11-29 01:10:03
【问题描述】:
我对这个输出感到震惊......现在已经用 C 编写了几年代码。 有人可以解释一个可能的用例吗?似乎应该是编译器警告。
#include <stdio.h>
int chk(int var)
{
return var++;
}
int main (void)
{
int a = 1;
a = chk(a);
printf("var is: %d\n", a);
return 0;
}
var is: 1
【问题讨论】:
-
你为什么“震惊”,为什么你认为编译器应该发出警告?
-
我发现这是完全可以预料的。另一方面,如果
++var返回 1,我会感到震惊。 -
@G.M.:绝对欢迎警告“此操作无效”。
-
有人可以解释一个可能的用例吗?在这种情况下不是,但切换到
static可能很有用:int chk(void){static int var = 1; return var++;}返回函数被调用的次数 :) -
@David Ranieri;一些硬件领域的巫术
标签: c operator-precedence