標識符的認識

從新認識了不少的標識符,其實以前大多的代碼裏都有所體現,有少數沒有用過的,我着重的進行了記憶,而且實現了一些例題;ide

左移右移標識符

#include <stdio.h>
int main()
{
    int num = 0;
    //找出num中的二進制位中的1的個數
    scanf("%d", &num);
    int i = 0;
    int count = 0;
    for (i = 0; i < 32; i++)
    {
        if (1 == ((num >> i) & 1))

            count++;
    }
    printf("%d", count);
    return 0;   
}

以上表現了右移標識符的一種用法,右移標識符只是將數字對應的二進制位進行右移,左移標識符擇優算數左移和邏輯左移,編譯器中的是算術左移,會保留符號位,數據存儲的時候都是存爲補碼的形式,正數原碼等於補碼,負數的補碼等於原碼按位取反再加一。指針

結構體構建的標識符

struct Stu
{
    char name[20];
    int age;
    char id[20];
};
#include <stdio.h>
int main()
{
    struct Stu s1 = { "張三",20,"2020012111" };
    printf("%s\n", s1.name);
    printf("%d\n", s1.age);
    printf("%s\n", s1.id);

    struct Stu* ps = &s1;
    printf("%s\n", (*ps).name);

    printf("%s\n", ps->name);
    //->  結構體指針指向操做符
    return 0;
}

其中的指向地址的操做符明顯比直接用名稱打印方便多了。code

標識符的錯誤用法

#include <stdio.h>
int main()
{
    char a = 127;
    char b = 3;
    char c = a + b;
    printf("%d\n", c);
    int x = 1;
    printf("%d\n", x + --x);//無心義的算式

    return 0;
}

在不一樣的編譯器中會有不一樣的結果編譯器

#include <stdio.h>
int main()
{
    int i = 1;
    int a = (++i) + (++i) + (++i);
    printf("%d  %d\n", a, i);
    return 0;
}

要經過操做符肯定惟一的計算路徑,那麼這個表達式纔是正確的。因此上面的代碼時錯誤的,在 Linux系統中的執行結果爲10it

相關文章
相關標籤/搜索