1. 程式人生 > >linuxC學習第九天

linuxC學習第九天

一、優先順序與結合性的區分

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;
}