日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C程序设计语言——基础概念

發(fā)布時(shí)間:2023/12/14 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C程序设计语言——基础概念 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C語言從入門到精通

每天進(jìn)步一點(diǎn)點(diǎn),日積月累。

紙上得來終覺淺,絕知此事要躬行。

C 語言概述

  • 為什么學(xué)習(xí)C語言

  • C語言的起源和發(fā)展

  • 第一代語言:機(jī)器語言(0000、1111、1101)
  • 第二代語言:匯編語言(ADD、AX、BX)
  • 第三代高級語言
  • 結(jié)構(gòu)化語言:使得它的數(shù)據(jù)和操作是分離的

  • Fortran(用于科學(xué)計(jì)算)
  • Basic(->VB)
  • C語言
  • Pascal(用于教學(xué))
  • 面向?qū)ο笳Z言

  • Algo simula67
  • Ada smallTalk
  • C++
  • Java(->C#)
  • 速度:C>C++>Java

  • C語言的特點(diǎn)

    優(yōu)點(diǎn):代碼量小、速度快、功能強(qiáng)大

    windows C內(nèi)核 C++外包

    Unix C

    linux C

    缺點(diǎn):危險(xiǎn)性高、開發(fā)周期長、可移植性不強(qiáng)

  • C語言的應(yīng)用領(lǐng)域

  • 系統(tǒng)軟件開發(fā)

  • 操作系統(tǒng):Windows、Unix、Linux
  • 驅(qū)動程序:主板、顯卡、攝像頭驅(qū)動
  • 數(shù)據(jù)庫:DB2、Oracle、Sql server
  • 應(yīng)用軟件開發(fā)

  • 辦公軟件
  • 圖形圖像軟件
  • 嵌入式軟件
  • 游戲開發(fā)
  • 模塊化程序設(shè)計(jì)思想

    在設(shè)計(jì)較復(fù)雜的程序時(shí),一般采用自頂向下的方法,將問題劃分為幾個(gè)部分,各個(gè)部分再進(jìn)行細(xì)化,直到分解為較好解決問題為止。
    模塊化設(shè)計(jì),簡單地說就是程序的編寫不是一開始就逐條錄入計(jì)算機(jī)語句和指令,而是首先用主程序、子程序、子過程等框架把軟件的主要結(jié)構(gòu)和流程描述出來,并定義和調(diào)試好各個(gè)框架之間的輸入、輸出鏈接關(guān)系逐步求精的結(jié)果是得到一系列以功能塊為單位的算法描述。以功能塊為單位進(jìn)行程序設(shè)計(jì),實(shí)現(xiàn)其求解算法的方法稱為模塊化。
    模塊化的目的是為了降低程序復(fù)雜度,使程序設(shè)計(jì)、調(diào)試和維護(hù)等操作簡單化。
    利用函數(shù),不僅可以實(shí)現(xiàn)程序的模塊化,使得程序設(shè)計(jì)更加簡單和直觀,從而提高了程序的易讀性和可維護(hù)性,而且還可以把程序中經(jīng)常用到的一些計(jì)算或操作編寫成通用函數(shù),以供隨時(shí)調(diào)用

    舉例:

  • C語言編程預(yù)備知識

  • CPU、內(nèi)存條、硬盤、顯卡、主板、顯示器之間的關(guān)系
    某雙擊硬盤上存放的文件(視頻,音頻),單擊后操作系統(tǒng)將硬盤上數(shù)據(jù)調(diào)入內(nèi)存條中,CPU去處理內(nèi)存條中數(shù)據(jù),圖像的話通過顯卡在顯示器顯示。

  • 程序如何運(yùn)行起來
    文本編譯軟件上寫完程序后,點(diǎn)擊編譯(Compiler)、鏈接(Linker)之后Visual C++生成 .exe可執(zhí)行文件,再點(diǎn)擊運(yùn)行(Built)之后,Visual C++請求OS去調(diào)用CPU執(zhí)行 .exe文件。

    編譯:由編譯程序?qū)τ脩粼闯绦蜻M(jìn)行編譯,形成若干個(gè)目標(biāo)模塊(Object Module)。
    鏈接:由鏈接程序?qū)⒕幾g后形成的一組目標(biāo)模塊以及它們所需要的庫函數(shù)鏈接在一起,形成一個(gè)完整的裝入模塊(Load Module)。
    裝入:由裝入程序?qū)⒀b入模塊裝入內(nèi)存。


  • 編譯預(yù)處理

    • 定義
      #開頭的是編譯預(yù)處理指令,它們不是C語言成分,但是C語言離不開它們

    • 宏定義
      不帶參數(shù)的宏定義

      #define 宏名 替換文本#define PI 3.14159在C語言編譯器開始編譯前,編譯預(yù)處理程序會把程序中的名字替換成值

      帶參數(shù)的宏定義

      #define 宏名 (參數(shù)表) 字符串#define RADTODEG ((x)*57.29)
  • 標(biāo)識符

    命名規(guī)則:只能由字母與數(shù)字、下劃線組成第一個(gè)字符必須是字母或下劃線區(qū)分字母大小寫不能是C語言關(guān)鍵字分類:關(guān)鍵字預(yù)定義標(biāo)識符用戶標(biāo)識符
  • 什么是數(shù)據(jù)類型

  • 什么是變量
    變量的本質(zhì):是內(nèi)存中一段存儲空間,不同類型的變量其存儲單元大小不同
    定義:值可以改變的量
    存儲單元里存放的是該變量的值
    變量要有變量名,在使用前必須先定義

    變量的數(shù)據(jù)類型:

    字符型數(shù)據(jù)與整型數(shù)據(jù)之間可以通用,一個(gè)字符能用字符的形式輸出,也能用整數(shù)的形式輸出(字符的本質(zhì)上是代表一個(gè)十進(jìn)制整數(shù))

    變量的運(yùn)算:

    字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,相當(dāng)于對他們的ASCII碼進(jìn)行運(yùn)算 /* 字母轉(zhuǎn)換來理解字符變量的運(yùn)算過程 以下為小寫字符轉(zhuǎn)換為大寫字符 */#include <stdio.h>int main(void) {char ch;scanf("%c", &ch);//方式一 printf("%c\n", ch-32);//由于字符本質(zhì)就是使用ASCII碼的十進(jìn)制整數(shù)進(jìn)行存儲,所以可以直接運(yùn)算//方式二printf("%c\n", ch-'\x20');//十六進(jìn)制的'\x20'表示十進(jìn)制32所代表的字符 //方式三printf("%c\n", ch-' ');//空格字符' '表示十進(jìn)制的32 return 0; }

    總結(jié):

  • C語言并無char類型,就是用Int表示char的!char占一個(gè)字節(jié),在C語言所有類型中最小。

  • 在C語言中,實(shí)際上字符型數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的,并不是真正的把一個(gè)字符存進(jìn)內(nèi)存里。在對字符型數(shù)據(jù)進(jìn)行相加減運(yùn)算的時(shí)候,系統(tǒng)會首先會將char型數(shù)據(jù)以隱形的方式轉(zhuǎn)化成int型數(shù)據(jù)再進(jìn)行相加減運(yùn)算的。因此,由字符型數(shù)據(jù)在內(nèi)存的存儲方式來看,字符型數(shù)據(jù)是可以進(jìn)行數(shù)值運(yùn)算的,對字符型數(shù)據(jù)做數(shù)字運(yùn)算實(shí)際上就是對字符本身對應(yīng)的ASCII碼進(jìn)行相應(yīng)的數(shù)值運(yùn)算。

  • “ 整型”和“字符型”可以互相轉(zhuǎn)換:

    (char)整型變量=字符型變量(int)字符型變量=整型變量
  • 變量為什么必須初始化(賦值)
    軟件運(yùn)行期間,軟件所占的內(nèi)存空間不再分配給其他軟件,當(dāng)軟件運(yùn)行完畢后,OS將回收內(nèi)存空間(OS并不清空該內(nèi)存空間遺留下的數(shù)據(jù))

  • 如何定義變量
    數(shù)據(jù)類型 變量名=要賦的值
    (int price = 10;)

  • 進(jìn)制

  • 什么叫進(jìn)制

    十進(jìn)制就是逢十進(jìn)一:0 1 2 3 4 5 6 7 8 9 10 11二進(jìn)制就是逢二進(jìn)一:0 1 10 11 100 101 110 111十六進(jìn)制就是逢十六進(jìn)一:0 1 2 3 4 5 6 7 8 9 A B C D E F
  • 進(jìn)制轉(zhuǎn)換的預(yù)備知識

  • 把r進(jìn)制轉(zhuǎn)換為十進(jìn)制

  • 把十進(jìn)制轉(zhuǎn)換成r進(jìn)制
    1. 把十進(jìn)制轉(zhuǎn)換為二進(jìn)制

    2. 把十進(jìn)制轉(zhuǎn)換為八進(jìn)制

    3. 把十進(jìn)制轉(zhuǎn)換為十六進(jìn)制

    十進(jìn)制轉(zhuǎn)r進(jìn)制方法:除r取余,直至商為0,余數(shù)倒敘排列

  • 二進(jìn)制與十六進(jìn)制轉(zhuǎn)換

    一個(gè)十六進(jìn)制位必須用4個(gè)二進(jìn)制位表示

    一個(gè)八進(jìn)制為必須用是三個(gè)二進(jìn)制位表示

  • 不同進(jìn)制所代表的的數(shù)值之間的關(guān)系

    十進(jìn)制的3981轉(zhuǎn)換為十六進(jìn)制是F8D十進(jìn)制的3981和十六進(jìn)制的F8D所代表的本質(zhì)上都是同一個(gè)數(shù)
  • C語言規(guī)定八進(jìn)制前加:0
    C語言規(guī)定十六進(jìn)制前加:0X

    二進(jìn)制的101和十進(jìn)制的5,本質(zhì)上是一樣的,只是外部形式不同。

    常用計(jì)數(shù)制對照表

    同一個(gè)值不同的進(jìn)制表示形式不同

  • 什么是常量
    在程序運(yùn)行中,其值不能被改變的量。

  • 常量在C語言中如何表示
    在字符集中,有一類字符具有這樣的特性:當(dāng)從鍵盤上輸入這個(gè)字符時(shí),顯示器上 就可以顯示這個(gè)字符,即輸入什么就顯示什么。這類字符稱為可顯示字符,如a、b、c、$、+和空格符等都是可顯示字符。

    另一類字符卻沒有這種特性。它們或者在鍵盤上找不到對應(yīng)的一個(gè)鍵(當(dāng)然可以用特殊方式輸入),或者當(dāng)按鍵以后不能顯示鍵面上的字符。其實(shí),這類字符是為控制作用而設(shè)計(jì)的,故稱為控制字符。 在C語言中,構(gòu)成字符常量的控制字符必須用轉(zhuǎn)義字符表示。

    舉例:轉(zhuǎn)義字符必須也要加' '轉(zhuǎn)義字符是C語言中表示字符的一種特殊形式,其含義是將反斜杠后面的字符轉(zhuǎn)換成另外的意義使用單撇號括起一個(gè)字符的形式即字符常量需要注意以下幾點(diǎn): (1)字符常量只能用單撇號括起來,不能使用單引號或其他括號。 (2)字符常量中只能包括一個(gè)字符,不能是字符串。 (3)字符常量是區(qū)分大小寫的。 (4)單撇號只是界限符,不屬于字符常量中旳一部分,字符常量只能是一個(gè)字符,不包括單撇號。 (5)單撇號里面可以是數(shù)字、字母等C語言字符集中除’和\以外所有可現(xiàn)實(shí)的單個(gè)字符,但是數(shù)字被定義為字符之后則不能參與數(shù)值運(yùn)算。'\0':表示轉(zhuǎn)義字符,結(jié)果為0 '\ddd':三位8進(jìn)制的數(shù)字,但是每個(gè)數(shù)字都不能超過8

    通常使用轉(zhuǎn)義字符表示ASCII碼字符集中不可打印的控制字符和特定功能的字符,下表是常用的轉(zhuǎn)義字符及其含義。

  • 轉(zhuǎn)義字符意義ASCII碼值(十進(jìn)制)
    \a響鈴(BEL)007
    \b退格(BS) ,將當(dāng)前位置移到前一列008
    \f換頁(FF),將當(dāng)前位置移到下頁開頭012
    \n換行(LF) ,將當(dāng)前位置移到下一行開頭010
    \r回車(CR) ,將當(dāng)前位置移到本行開頭013
    \t水平制表(HT) (跳到下一個(gè)TAB位置)009
    \v垂直制表(VT)011
    \|代表一個(gè)反斜線字符’ \ ’092
    \’代表一個(gè)單引號(撇號)字符039
    \"代表一個(gè)雙引號字符034
    \0空字符(NULL)000
    \ddd1到3位八進(jìn)制數(shù)所代表的任意字符3位八進(jìn)制
    \xhh1到2位十六進(jìn)制所代表的任意字符2位十六進(jìn)制

    由上可知,使用八進(jìn)制轉(zhuǎn)義字符和十六進(jìn)制轉(zhuǎn)義字符,不僅可以表示控制字符,而且也可以表示可顯示字符。但由于不同的計(jì)算機(jī)系統(tǒng)上采用的字符集可能不同,因此,為了能使所編寫的程序可以方便地移植到其他的計(jì)算機(jī)系統(tǒng)上運(yùn)行,程序中應(yīng)少用這種形式的轉(zhuǎn)義字符。

  • 常量以什么樣的二進(jìn)制代碼存儲在計(jì)算機(jī)中
    整數(shù)以補(bǔ)碼的形式轉(zhuǎn)化為二進(jìn)制代碼存儲在計(jì)算機(jī)中的。
    實(shí)數(shù)以IEEE754標(biāo)準(zhǔn)轉(zhuǎn)化為二進(jìn)制代碼存儲在計(jì)算機(jī)中的。
    字符的本質(zhì)實(shí)際也是與整數(shù)的存儲方式相同。

  • 代碼規(guī)范化
    推薦閱讀《高質(zhì)量程序設(shè)計(jì)指南C/C++編修》
    讓別人和自己更容易可讀和理解

  • 什么是字節(jié)
    字節(jié)就是存儲數(shù)據(jù)的單位,并且是硬件所能訪問的最小單位。
    1字節(jié)(Byte) = 8位(Bit)

  • 什么是ASCII碼
    ASCII不是一個(gè)值,而是一種規(guī)定。
    ASCII規(guī)定了不同的字符是使用哪一種整數(shù)值去表示。
    GB2312和UTF-8規(guī)定不同字母用什么數(shù)字表示。

  • 運(yùn)算符和表達(dá)式

  • C語言運(yùn)算法簡介
    • 算術(shù)運(yùn)算符:+,-,*,/,%

    • 除法/的運(yùn)算結(jié)果和運(yùn)算對象的數(shù)據(jù)類型有關(guān)

      兩數(shù)都是int,則商是int除數(shù)和被除數(shù)只要有一個(gè)/兩個(gè)是浮點(diǎn)數(shù),則商是浮點(diǎn)型
    • 取余%的運(yùn)算對象:兩個(gè)操作數(shù)必須是整數(shù)(int類型),結(jié)果是整除后的余數(shù)

      其余數(shù)的符號與被除數(shù)相同例如:13%-3==1;-13%3==-1;3%5==3;-3%5==-3;1%25=1當(dāng)被余數(shù)小于余數(shù)時(shí),結(jié)果就是被余數(shù)舉例:要得到一個(gè)三位數(shù)456的個(gè)位、十位、百位個(gè)位數(shù):456%10=6十位數(shù):456/10%10=5百位數(shù):456/10=4
    • 關(guān)系運(yùn)算符:>,<,>=,<=,!=,==

    • 位運(yùn)算符:>>,<<,~,&,|,^

    • &——按位與

      1&1 = 11&0 = 00&1 = 00&0 = 0 #include <stdio.h>int main(void) {int i = 5;int j = 7;int k;k = i&j; //表示5的二進(jìn)制0101與7的二進(jìn)制0111相與,結(jié)果是0101還是5printf("%d\n", k);k = i&&j;printf("%d\n", k); //k的值只能是1或0,因?yàn)?amp;&是邏輯運(yùn)算符 return 0; } //結(jié)果為:51 --------------------------------
    • |——按位或

      1|0 = 11|1 = 10|1 = 10|0 = 0例如:5|2等價(jià)于00000101|00000010,結(jié)果為00000111 #include <stdio.h>int main(void) {int i = 3;int j = 5;int k;k = i | j;printf("%d\n", k);return 0;//結(jié)果: 7 -------------------------------- }
    • ~——按位取反

      ~i就是把i變量所有的二進(jìn)制位取反
    • ^——按位異或

      規(guī)則是參與運(yùn)算的兩個(gè)運(yùn)算符中相對應(yīng)的二進(jìn)制位上,若數(shù)相同,則該位的結(jié)果為0,否則為1相同位0,不同位11^0 = 10^1 = 11^1 = 00^0 = 1例如:s=32,s^=32,printf("%d", s), 相同為假不同為真,結(jié)果是03^2等價(jià)于00000011^00000010,結(jié)果為00000001,十進(jìn)制是1
    • <<——按位左移

      i<<1表示把i的所有二進(jìn)制位左移一位,右邊補(bǔ)0.左移n位相當(dāng)于乘以2的n次方例:i = i * 8i = i << 3 速度快
    • >>——按位右移

      i>>3表示把i的所有二進(jìn)制位右移3,左邊一般都是0有移n位表示除以2的n次方(不能溢出導(dǎo)致數(shù)據(jù)丟失)

      位運(yùn)算符的現(xiàn)實(shí)意義:通過位運(yùn)算符我們可以對數(shù)據(jù)的操作精確到每一位

    • 邏輯運(yùn)算符:!,||,&&

    • C語言對真假處理

      非0是真 真表示10是假 假是0表示例如:(!a == 0)<==> ((!a) == 0)因?yàn)?的優(yōu)先級高于== 它表示是a不等于0時(shí)為真(a == !0)表示的是a等于1的時(shí)候?yàn)檎?
    • C語言真假判斷

      &&左邊的表達(dá)式為假,右邊的表達(dá)式肯定不執(zhí)行||左邊的表達(dá)式為真,右邊的表達(dá)式肯定不執(zhí)行
    • &&邏輯與也叫并且

    • 邏輯運(yùn)算符的結(jié)果只能是0或1

    • 條件運(yùn)算符:?:

      格式:A ? B : C 等價(jià)于 if(A) //當(dāng)表達(dá)式A為真,執(zhí)行表達(dá)式BB;else //當(dāng)表達(dá)式A為假,執(zhí)行表達(dá)式CC;
    • 指針運(yùn)算符:&,*

    • 賦值運(yùn)算符:=

      作用:將一個(gè)數(shù)值賦值給一個(gè)變量或?qū)⒁粋€(gè)變量的值賦給另一個(gè)變量。

      賦值表達(dá)式一般形式:變量名=表達(dá)式/變量/值

      注:左邊不能是表達(dá)式,右邊可以是賦值表達(dá)式a+b=c 錯誤的a=b=7+1 正確的a=7+1=b 錯誤的

      復(fù)合賦值表達(dá)式:+=、-=、*=、/=、%=

      例子:t *= sum +12 <==> t = t * (sum + 12)x-=x+x <==> x=x-(x+x) +的優(yōu)先級高于-=5=4+1錯誤,常量5不能被賦值舉例:已有變量a=9,計(jì)算表達(dá)式a+=a-=a+a的值1. 先計(jì)算a+a=182. 計(jì)算a-=18(此時(shí)a任然是9) a=a-18,a變?yōu)?93. 計(jì)算a+=-9(此時(shí)a是-9) a=a+-9 ,a變?yōu)?18
    • 逗號運(yùn)算符:,

      逗號表達(dá)式:用逗號運(yùn)算符將幾個(gè)表達(dá)式連接起來格式:A;B;C;D;……功能:從左到右依次執(zhí)行,最終表達(dá)式的值是最后一項(xiàng)的值例如:j=2;i=(j++,++j,j+2,j-3) 最終i=3(i=3,i++,++i,i+5)從左向右計(jì)算,i++之后i為4,++i之后i為5,i+5之后值為10,所以表達(dá)式的值為10,i為5
    • 字節(jié)運(yùn)算符:sizeof

      sizeof(類型):是靜態(tài)得到字節(jié)數(shù),不會影響下面語句
    • 強(qiáng)制運(yùn)算符:(類型名)(表達(dá)式)

      利用強(qiáng)制類型轉(zhuǎn)換符將一個(gè)表達(dá)式轉(zhuǎn)換為前面所執(zhí)行的數(shù)據(jù)類型一般形式:(類型名)(表達(dá)式)例子:(float)(5) 最終值為5.000000
    • 初等運(yùn)算符:圓括號(),下標(biāo)運(yùn)算符[ ],結(jié)構(gòu)體成員運(yùn)算符->

    • 單目、雙目、三目運(yùn)算符

      單目就是這個(gè)運(yùn)算符只對一個(gè)變量進(jìn)行操作代表符號:!(邏輯非) ,~(按位取反),++(自增),--(自減)雙目就是這個(gè)運(yùn)算符對兩個(gè)變量進(jìn)行操作三目就是這個(gè)運(yùn)算符對三個(gè)變量進(jìn)行操作代表符號: ?: (條件運(yùn)算符)
    • 自增、自減運(yùn)算符

      作用:自增運(yùn)算符++,使運(yùn)算變量的值增1,自減運(yùn)算符--,使運(yùn)算變量值減一均是單目運(yùn)算符分類:前自增++i,后自增i++相同點(diǎn):最終都使i的值加一不同點(diǎn):前自增整體表達(dá)式的值是i加1之后的值;后自增整體表達(dá)式的值是i加1之前的值注意:for循環(huán)條件語句中出現(xiàn)++i或者i++都是一樣的,沒有區(qū)別,因?yàn)闂l件語句for(i++; ; )中是執(zhí)行完第一個(gè)條件之后,再執(zhí)行第二個(gè)條件語句與賦值運(yùn)算符=不同,

      例子:

      int a = 10;printf(a++) = 10;printf(a) = 11;printf(++a) = 12;printf(a) = 12;visit(*p++); 第一次先輸出*p,下一次才輸出*p+1compare(*p++, e)是先比較*p與e的值,第二次才是用*p+1和e的值進(jìn)行比較k++是先取K的值再將k的值自增1 為什么會出現(xiàn)自增:1. 代碼更精煉2. 自增的速度更快 i++>i=i+1學(xué)習(xí)自增前要明白的幾個(gè)問題1. 我們編程是應(yīng)該盡量屏蔽掉前自增和后自增的區(qū)別2. i++和++i單獨(dú)成一個(gè)語句,不要把它作為一個(gè)完整復(fù)合語句的一部分使用。
  • 運(yùn)算符的優(yōu)先級和結(jié)合性
    優(yōu)先級:初等>單目>算術(shù)>關(guān)系>邏輯>條件>賦值>逗號
    結(jié)合性:左結(jié)合性->單目,條件,賦值,擴(kuò)展;其余右結(jié)合性

    舉例:a+b+c*(d+e)執(zhí)行順序?yàn)?#xff1a;因?yàn)閳A括號的優(yōu)先級最高,乘法運(yùn)算符次之,加法運(yùn)算符最低,同優(yōu)先級中加法結(jié)合性:從左向右結(jié)合所以:先執(zhí)行a+b的r1,再執(zhí)行(d+e)得r2,在執(zhí)行c*r2的r3,最后執(zhí)行r1+r3得表達(dá)式結(jié)果
  • 圖示運(yùn)算符優(yōu)先級和結(jié)合性

    最高級:出現(xiàn)同級別運(yùn)算符時(shí)的結(jié)合方向是從左往右

    第二級:這一級都是單目運(yùn)算符號,這一級的結(jié)合方向是從右向左。
    出現(xiàn) * p++,這時(shí) * 和++同級別,先算右邊,再左邊。所以 * p++等價(jià)于 * (p++)


    第三級:這一級都是算術(shù)運(yùn)算符,結(jié)合順序和數(shù)學(xué)學(xué)習(xí)中一致的,先乘除取余數(shù),后加減。

    第四級:這是左移、右移運(yùn)算符,位運(yùn)算時(shí)可能需要用到。

    第六級:這三個(gè)符號也是位運(yùn)算符號,其中內(nèi)優(yōu)先級,&>^>|。

    第七級:邏輯與&&優(yōu)先級大于邏輯或||。


    第八級:也稱為條件運(yùn)算符號,是C語言中唯一的一個(gè)三目運(yùn)算符,結(jié)合順序是從右往左。


    第九級:這些運(yùn)算符也叫做賦值運(yùn)算符,除此之外,>>=、<<=、&=、^=、|=這些賦值運(yùn)算符也在這一級別內(nèi),結(jié)合順序是從右往左。


    最低級:逗號運(yùn)算符也稱為順序求值運(yùn)算符,在C語言中,運(yùn)算級別最低。

  • 表達(dá)式

  • 當(dāng)運(yùn)算符兩側(cè)的運(yùn)算數(shù)據(jù)類型不一致時(shí),結(jié)果與精度高的保持一致

    C語言一些瑣碎的知識

  • 浮點(diǎn)數(shù)的存儲所帶來的的問題
    float和double都不能保證可以精確的存儲一個(gè)小數(shù)。

    例如:有一個(gè)浮點(diǎn)型變量x,如何判斷x的值是否為0if(|x-0.000001|<=0.000001)是else不是 float i=99.9 printf("%f\n", i); 最終的結(jié)果為:99.900002

    為什么循環(huán)中更新的變量不能定義為浮點(diǎn)型呢

    因?yàn)楦↑c(diǎn)型不一定能準(zhǔn)確存儲。
  • 二進(jìn)制全部為0的含義——0000000…00000的含義

    • 表示數(shù)值零

    • 表示字符串結(jié)束標(biāo)記 ‘\0’

    • 空指針NULL

      NULL本質(zhì)也是0,而這個(gè)零不代表數(shù)字零,而表示的是內(nèi)存單元的編號為零(表示0地址,即編號為零)我們計(jì)算機(jī)規(guī)定了,以零為編號的存儲單元的內(nèi)容不可讀,不可寫
    • 0地址

      在現(xiàn)代OS中,多進(jìn)程中,OS給程序虛擬地址空間,所有程序在運(yùn)行時(shí)都以為自己從0開始的一片連續(xù)空間(32位機(jī)器,頂是4G)一般0地址不能碰的,在這種情況下,用0地址表示特殊事情1. 返回指針無效2. 用NULL表示0地址
  • 什么叫分配內(nèi)存,什么叫釋放內(nèi)存

    分配內(nèi)存:

    OS把某一塊內(nèi)存空間的使用權(quán)限分配給該程序

    釋放內(nèi)存:

    OS把分配給該程序的內(nèi)存空間的使用權(quán)限收回,該程序不能夠再使用這一塊內(nèi)存空間注:釋放內(nèi)存不是把該內(nèi)存的內(nèi)容清零
  • 變量為什么必須得初始化

    不初始化,則變量通常就是垃圾值

  • 總結(jié)

    以上是生活随笔為你收集整理的C程序设计语言——基础概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。