gpt4 book ai didi

c - 没有分号的语句没有错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:23 24 4
gpt4 key购买 nike

     #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);

换句话说,对于intsxyx--- y被解析为(x--) - y


* 虽然在语法上有效,但语句本身是未定义的行为,因为在没有中间序列点的情况下对 b 进行了修改和读取

关于c - 没有分号的语句没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26583060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com