(2)對(duì)于 || 運(yùn)算,(條件1)&&(條件2);執(zhí)行判斷條件 1是否成立,再執(zhí)行判斷條件2是否成立 ,若1 和2 都為“假”,則整個(gè)表達(dá)式的值為0; 若執(zhí)行判斷條件1的時(shí)候,得到條件1為 “真" 的結(jié)果,則跳過條件2的判斷 ,直接返回1 .
(3)順便說下運(yùn)算符的優(yōu)先級(jí)由大到小的順序?yàn)椋汉笾?+,前置++,!=,&&,||
第一題:
{
int i=1,j=2,k=3; (你這寫的時(shí)候是不是掉了一個(gè) i )
if(i++==1&&(++j==3||k++==3))
printf("%d%d%d\n,i,j,k);
}
你if 語句里面的 條件1 是 i++==1 ,先執(zhí)行 i ++,i++的值為1,i自加1 變?yōu)? ,正確,再判斷(++j==3||k++==3) ,同理先判斷 ++j==3 是否成立,j自加1變?yōu)?,顯然++j 值為3是正確的,所以跳過 k++==3的判斷,得到(++j==3||k++==3) 的值為1,因此沒有執(zhí)行k++,k的值不變.
第二題
{int a=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2||c--!=2)
printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
}
你 if,else語句的縮進(jìn)不合理,導(dǎo)致你程序難以讀懂,可將其改為:
if(a==1&&b++==2)
if(b!=2||c--!=2) printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
理解清楚你的else和if的匹配,哪個(gè)if 和哪個(gè)else 匹配要搞清楚,然后按照上面講解的 && ,++,- -,!= 運(yùn)算法則自己慢慢理解
第三題,
說一下 if(a>b>c)
執(zhí)行 a>b>c時(shí),先 判斷 a>b是否成立,顯然成立,返回值1,再判斷a>b返回的值是否大于c ,顯然1 是小于c 的,最終 表達(dá)式 a>b>c 的值 為0 ; 其它部分參考 第一題和第二題 的講解
!謝謝你的回答啊,別的都挺明白的。但是我第二題的c的值還是不明白。b!=2只為0,c--!=2值為1,它倆或?yàn)?,然后輸出c的時(shí)候就不是跳過了,c--是3,那c不應(yīng)該是2了嗎?最終結(jié)果不應(yīng)該是2嗎?#include