次のようなステートメント (セミコロンの代わりにカンマ) が奇妙に見えることはわかっています。
if(a<b)printf("Hello\n"),a+=5,b/=5,printf("%d,%d",a,b);
しかし、それは完全に正常に動作し、それはcomma
hereがシーケンスポイントとして機能するためだと読んでいました.私はこれを理解できます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);
}