#include <stdio.h>
int main()
{
int a,b;
b=10;
a=b--;
printf("a=%d b=%d\n",a,b);
a=b--- //Here why i didn't get error....???
printf("a=%d b=%d\n",a,b);
//a=b---- or a=b---; //for these, i got error
a=b--;
printf("a=%d b=%d\n",a,b);
}
为什么语句 b---
不显示错误。我可以说这是一个错误......?如果不是,请解释内部发生了什么......?
最佳答案
printf
返回 int
,因此您有一个语法上有效的语句*。这个
a=b---
printf("a=%d b=%d\n",a,b);
是一个单独的语句,完全与此相同:
a = b-- - printf("a=%d b=%d\n",a,b);
或者,为了更加清晰,
a = (b--) - printf("a=%d b=%d\n", a, b);
换句话说,对于ints
x
和y
,x--- y
被解析为(x--) - y
。
* 虽然在语法上有效,但语句本身是未定义的行为,因为在没有中间序列点的情况下对 b
进行了修改和读取
关于c - 没有分号的语句没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26583060/