829程序設計 筆記

  1. 合法語句
    ! 優先級大於 ==
{
    int a=2;
    +a;
}
(int)3.14;
(int)(3.14);
(float)3;
(float)(3);     //類推

float < int; //不同類型數據大小比較

int a=2,b=3;
int a1 = (!a);   //0
int a2 = (!b==0); //先運算 !b  得 0;==》 a2值爲1
int main()
{
    int i=1;
    for(i;i++<4;);
    printf("%d",i); //5
}
#include<stdio.h>
#include<string.h>
int main()
{
    int x=1,y=0,a=0,b=0;
    switch(x)
    {
        case 1:
            a++;    //沒有break的話 不管條件  執行下一個case;
        case 2:
            a++;b++;break;
        case 3:
            a++;b++;
    }
    printf("%d %d",a,b); 2 1;
}
  1. 非法語句
    {
    int a=2;
    a+;
    }
  2. 字符數組
    {
    char s[]=”123\n4\n”;
    sizeof(s); // 7 “”型末尾自動加’\0’
    strlen(s) // 6 元素個數
    }
    關於 sizeof()
    第一個例子: char* ss = “0123456789”;
    sizeof(ss) 結果 4 ===》ss是指向字符串常量的字符指針
    sizeof(*ss) 結果 1 ===》*ss是第一個字符
    char ss[] = “0123456789”;
    sizeof(ss) 結果 11 ===》ss是數組,計算到\0位置,因此是10+1
    sizeof(*ss) 結果 1 ===》*ss是第一個字符
    char ss[100] = “0123456789”;
    sizeof(ss) 結果是100 ===》ss表示在內存中的大小 100×1
    int ss[100] = “0123456789”;
    sizeof(ss) 結果 400 ===》ss表示在內存中的大小 100×4
    char q[]=”abc”;
    char p[]=”a\n”;
    sizeof(q),sizeof(p),strlen(q),strlen(p);
    結果是 4 3 3 2
#include<stdio.h>
#include<string.h>
void fun(char s[]);
int main()
{
    int a;
    float b;
    char c;
    char s[]="hello";
    char *p = s;
    int aa = sizeof(a);  //4
    int bb = sizeof(b);  //4
    int cc = sizeof(c);  //1
    int dd = sizeof(s);  //5+1
    int ee = sizeof(p);  //指針大小 4
    fun(s);
}

void fun(char s[])
{
    int ee = sizeof(s);  //此時s相當於指針 4
}

關於strlen()
strlen(…)是函數,要在運行時才能計算。參數必須是字符型指針(char*)。當數組名作爲參數傳入時,實際上數組就退化成指針了。
它的功能是:返回字符串的長度。該字符串可能是自己定義的,也可能是內存中隨機的,該函數實際完成的功能是從代表該字符串的第一個地址開始遍歷,直到遇到結束符NULL。返回的長度大小不包括NULL。
4. 數組類型
32位/64位處理器 int型 4字節 有符號普通整型 -2的31次方~2的31次方-1

  1. 隨機數
#include<stdio.h>
#include<time.h>

void main()
{
    srand((int)time(0));
    int MAX=10;
    int MIN=1;
    int cc = rand() % (MAX + 1 - MIN) + MIN;;
    printf("%d ",cc);//產生從[MIN,MAX]間的隨機數
}

引用:http://blog.csdn.net/liushuijinger/article/details/7429197
原碼:

如果機器字長爲n,那麼一個數的原碼就是用一個n位的二進制數,其中最高位爲符號位:正數爲0,負數爲1。剩下的n-1位表示概數的絕對值。

例如: X=+101011 , [X]原= 00101011 X=-101011 , [X]原= 10101011
位數不夠的用0補全。

PS:正數的原、反、補碼都一樣:0的原碼跟反碼都有兩個,因爲這裏0被分爲+0和-0。

反碼:

知道了什麼是原碼,那反碼就更是張飛吃豆芽——小菜一碟了。知道了原碼,那麼你只需要具備區分0跟1的能力就可以輕鬆求出反碼,爲什麼呢?因爲反碼就是在原碼的基礎上,符號位不變其他位按位取反(就是0變1,1變0)就可以了。

例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100

補碼:

補碼也非常的簡單就是在反碼的基礎上按照正常的加法運算加1。

例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100,[X]補=11010101

PS:0的補碼是唯一的,如果機器字長爲8那麼[0]補=00000000。

  • 疑難點
    函數類型缺省,默認類型爲 int
    指針類型與所指類型一定要相同!!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章