linuxC學習第九天
阿新 • • 發佈:2018-11-20
一、優先順序與結合性的區分
1、優先順序:相當於對運算子的許可權進行了排列,優先順序高的先運算,逗號操作符具有最低的優先順序。
2、結合性:是優先順序的輔助手段,在優先順序相同的情況下的計算順序。大多數運算是從左至右計算,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。
二、型別轉換
1、強制轉換:在變數前使用(資料型別)進行強轉
2、隱式轉換:系統自帶的轉換系統,在內部自動轉換
注:轉換一般由低的向高的、由無符號向有符號、由整數向浮點數轉換,並且任何形式的轉換都不會改變原來的值。
三、邏輯關係
成立:結果為真,值為1;不成立:結果為假,值為0。(0是假,非0
四、自增與自減
1、++i,- -i:可以將它看作自私的人,先想到自己對自己進行加減的運算在帶入算式
2、i++,i- -:將其看作無私的人,先帶入算式後在想到自己,進行加減
注:對於sizeof()中的算式不會進行計算。
五、位運算子
1、&:對每一位進行與運算,可以用於對資料某些位清零,類似和0xffff進行&運算將後16位清0
2、|:對每一位進行或運算,可以用於對資料一些位置1,類似和0xffff進行&運算將前16位置1
3、^:對每一位進行異或運算
4、<<:左移運算子,對低位補零。左移n位可以看作乘以2^n次
5、>>:右移運算子,對高位補符號位。右移n位可以看作除以2^n次(除不盡時,把餘數預設進位)
6、~:對每一位取非
利用^運算查詢一組兩兩相對應的陣列中找出唯一的一個單獨的數。
#include <stdio.h>
int main()
{
int a[9]={123,123,44,45,54,54,44,23,23};
int c=a[0],i;
for(i=0;i<8;i++)
{
c =a[i+1]^c;
}
printf("%d\n",c);
return 0;
}
六、if、for語句的注意點
1、if語句的兩個浮點型資料不要之間進行比較,要看精度。
2、很大的浮點數不要和很小的數進行比較。
3、for語句中長迴圈層放在最內層,效率高
4、for語句中儘量不要出現=
七、小題目
通過程式設計實現,分別統計0——n有多少個0——9
提示:n通過引數傳入
#include <stdio.h>
int main()
{
int n;
int i;
scanf ("%d", &n);
int count0 = 1,count1 = 0,count2 = 0,count3 = 0,count4 = 0,count5 = 0,count6 = 0,count7 = 0,count8 = 0,count9 = 0;
for (i = 0; i <= n; i++)
{
int temp = i;
while ( temp != 0 )
{
if (temp % 10 == 9)
{
count9++;
}
if (temp % 10 == 8)
{
count8++;
}
if (temp % 10 == 7)
{
count7++;
}
if (temp % 10 == 6)
{
count6++;
}
if (temp % 10 == 5)
{
count5++;
}
if (temp % 10 == 4)
{
count4++;
}
if (temp % 10 == 3)
{
count3++;
}
if (temp % 10 == 2)
{
count2++;
}
if (temp % 10 == 1)
{
count1++;
}
if (temp % 10 == 0)
{
count0++;
}
temp = temp / 10;
}
}
printf ("count0 = %d\ncount1 = %d\ncount2 = %d\ncount3 = %d\ncount4 = %d\ncount5 = %d\ncount6 = %d\ncount7 = %d\ncount8 = %d\ncount9 = %d\n", count0,count1,count2,count3,count4,count5,count6,count7,count8,count9);
return 0;
}