1,if(a=1)與if(a==1)的區別
首先,if(a=1) 等價于 a=1;if(a);
而a == 1,是判斷a是不是為1;
if(sq)里面的分為兩種情況,一種是sq為0,不執行if里面的代碼內容;另一種是sq不為0,執行里面的代碼內容。即為零與非零。若if(sq)沒有帶括號,則執行if下面一條代碼。
舉例說明:
if(a=0) 等價于 a=0;if(a);
#include <stdio.h>
#include <stdlib.h>
int main()
{int a=1,b=0,c=0;if(a=0)//沒有括號,只執行if下面的一條操作 此時將0賦值給a,此時a為0,為0,跳過if語句b=1;c=2;printf("%d %d %d",a,b,c);//這里面會有個空格因為%d直接有個空格return 0;//輸出的結果會是 0 0 2
}
#include <stdio.h>
#include <stdlib.h>
int main()
{int a=1,b=0,c=0;if(a=1)//沒有括號,只執行if下面的一條操作 此時將1賦值給a,此時a為1,非0,執行if語句b=1;c=2;printf("%d %d %d",a,b,c);//這里面會有個空格因為%d直接有個空格return 0;//輸出的結果會是 1 1 2
}
if(a==0) 等價于 判斷a是否為0,若為0,為真,執行if語句;否則,不執行;
#include <stdio.h>
#include <stdlib.h>
int main()
{int a=1,b=0,c=0;if(a==0)//a不為0,則為false,不執行if語句b=1;c=2;printf("%d %d %d",a,b,c);//這里面會有個空格因為%d直接有個空格return 0;//輸出的結果會是 1 0 2
}
#include <stdio.h>
#include <stdlib.h>
int main()
{int a=1,b=0,c=0;if(a==1)//a為1,則為true,執行if語句b=1;c=2;printf("%d %d %d",a,b,c);//這里面會有個空格因為%d直接有個空格return 0;//輸出的結果會是 1 1 2
}
2,設x,y,z和t均為int型變量,執行以下語句:x=y=z=1; t=++x||(++y&&++z); 后x,y,z,t的值分別為__2,1,1,1__
解題思路:首先,括號優先級最高,逗號運算級最低,賦值運算符倒數第二低。優先級高,表示先結合,而不是先計算!!!
x,y,z的初始值為1,小括號內的先結合,當成一個整體。t=++x.之后,t和x均為2,由于或運算,有一則為一,(有一個為真,整體就為真,不需要往后繼續運算了),所以x為1,t為1,y和z均沒有變化。
2,sizeof();這個是一個數據類型,他可以將
未完待續…