Rüp*_*ure 0 c if-statement comma sequence-points
我知道如下的语句(逗号代替分号)看起来很奇怪:
if(a<b)printf("Hello\n"),a+=5,b/=5,printf("%d,%d",a,b);
Run Code Online (Sandbox Code Playgroud)
但它完全正常,我读过它是因为comma这里作为一个序列点.我可以理解这一点.但我只是不明白为什么以下失败然后我也使用了一个else:
if(a<b)printf("Hi\n"),else printf("Bye\n"),a+=5,b/=5,printf("%d,%d",a,b);
Run Code Online (Sandbox Code Playgroud)
它给出了错误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);
}
Run Code Online (Sandbox Code Playgroud)