一、x&y 按位與運算
如x=3 y=3
則:x=y=0011
結果還是:3
x|y 按位或運算,相同為0,不同為1
二、
int Vac=3;
int main(){
int Vac=10;
::Vac ;
count<<::Vac;
count<<Vac;
return 0;
}
結果:4,10
三、
int i=3,j=4;
i?i : j;
結果:4 4
五、
int i=1,j=2;
int k=i j;
結果:k=3;
六、
x=x 1;
讀兩次x的地址,編譯器不認為左右的x地址相同
x =1;
x的地址制度一次
x ;
效率由低到高排列
七、
#define product(x) (x*x)
int main(){
int i=3,j,k;
j=product(i );
//i=5
k=product( i);
return 0;}
結果;j=9;k=49;
八、
int a=5,b=3;
!a&&b ;
結果:a=5 b=3 因為當&&前面的運算為flase時候,不計算後面的,直接false
九、
char foo(void)
{
unsigned int a=6;
int b=-20;
char c;
(a b>6)?c=1:c=0;
return c;
}
結果:c=1;
無符號和有符號的相加,有符號的會自動轉化為無符號類型,即b會轉化成一個很大的整數,所以肯定大於6;
十、
#define SQR(x) (x*x)
main(){
int a,b=3;
a=SQR(b 2);
}
結果:a=11;
應為傳過去的是b 2
而實際執行的是b 2*b 2;
而不是(b 2)*(b 2)
如果SQR(x) ((x)*(x)) 則結果就是25了。
十一、
預處理,一年中有多少秒,應為牽扯的會溢出,所以數據類型要注意
#define SECONDS_PRE_YEAR(60*60*24*365)UL
十二、
宏定義:MIN
#define MIN(A,B) ((A)<=(B)?(A):(B))注意括號的使用。
資料未整理完整,以上供參考