#include <stdio.h>
int main()
{
int a = 9, b = 0, c = 7;
a = (a = b) && (c = b);
printf("%d\t%d\t%d",a,b,c);
return 0;
}
輸出結果為
0 0 7
一開始我也覺得很奇怪,為什麼C的值會是7而不是0。
後來去查了一下,原來
&& 有一個特性,也就是它的左邊如果是false (0) ,就不會去執行右邊的敘述
所以(c=b) 是不會被執行到的,上方的程式碼其實等效於下方這段程式。
#include <stdio.h>
int main()
{
int a = 9, b = 0, c = 7;
a = (a = b);
printf("%d\t%d\t%d",a,b,c);
return 0;
}
a被指定為b的值,所以為零。
我是分隔線
今天我們把b的值改成1,如下所示
#include <stdio.h>
int main()
{
int a = 9, b = 1, c = 7;
a = (a = b) && (c=b);
printf("%d\t%d\t%d",a,b,c);
return 0;
}
結果將大大不相同,因為a=b 也就是說a=1 ,所以&&左邊成立,所以會執行&&右邊的敘述,
把c=b ,因此c的值也為1,所以a= 1 && 1 ,因此輸出將變成 1 1 1
沒有留言:
張貼留言