我知道像下面这样的语句(用逗号代替分号)看起来很奇怪:
if(a<b)printf("Hello\n"),a+=5,b/=5,printf("%d,%d",a,b);
但它工作得很好,我读过这是因为comma
这里充当了一个序列点。我可以理解这一点。但我只是不明白为什么以下失败了,我也使用了 a else
:
if(a<b)printf("Hi\n"),else printf("Bye\n"),a+=5,b/=5,printf("%d,%d",a,b);
它给出了错误expected expression before 'else'
。
为什么第二个语句会出错?在第一个语句中,我们看到它comma
充当了一个序列点。那么为什么它之前没有这样做else
呢?导致错误的第二种情况有什么特别之处?这是我的完整程序:
#include<stdio.h>
int main(void)
{
int a=30,b=45;
//if(a<b)printf("Hello\n"),a+=5,b/=5,printf("%d,%d",a,b); //Works well
if(a<b)printf("Hi\n"),else printf("Bye\n"),a+=5,b/=5,printf("%d,%d",a,b);
}