次のようなステートメント (セミコロンの代わりにカンマ) が奇妙に見えることはわかっています。
 if(a<b)printf("Hello\n"),a+=5,b/=5,printf("%d,%d",a,b);
しかし、それは完全に正常に動作し、それはcommahereがシーケンスポイントとして機能するためだと読んでいました.私はこれを理解できますelse.
  if(a<b)printf("Hi\n"),else printf("Bye\n"),a+=5,b/=5,printf("%d,%d",a,b);
エラーが発生しますexpected expression before 'else'。
2 番目のステートメントでエラーが発生するのはなぜですか?最初のステートメントでは、commaそれがシーケンス ポイントとして機能することを確認しました。では、なぜそれが前に機能しないelseのでしょうか?エラーを引き起こす 2 番目のケースの特別な点は何ですか?これが私の完全なプログラムです:
#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); 
}