我知道這樣(到位分號的逗號)的聲明看起來很奇怪:爲什麼逗號運算符似乎在我的代碼中的「if」語句和「else」語句之間工作?
if(a<b)printf("Hello\n"),a+=5,b/=5,printf("%d,%d",a,b);
但它運行完美,我讀過那是因爲這裏comma
作爲一個序列point.I能瞭解this.But我只是不明白爲什麼那麼下面失敗了,在那裏我已經使用了一個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
充當序列point.Then爲什麼它不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);
}
http://stackoverflow.com/questions/16262983/are-there-sequence-point-issues-with-statements-like-int-a-4-ptr-a-or-x –
忘記一切Python(或任何其他非C/C++語言)曾經教過你關於逗號的問題,這是一個**運算符**在C和C++中。 – WhozCraig
@WhozCraig那麼,程序會出現/評估逗號左側的所有內容,並返回最後一個逗號後面的內容。但這對上面的'else'不公平。 –