『壹』 C語言數據類型所佔位元組是和運行的機器位數有關還是編譯器有關
1)C語言一般指的是ANSI C的標准,對應的處理器分別是32位和64位的。
2)類型分為內置類型和自定義類型(非內置類型)
內置類型指的是無需聲明就可使用的類型,比如char,double,int等。
自定義類型指的是使用前必須聲明的,如struct StructName{};結構類型,int a[5];數組類型以及enum Color{};枚舉類型等。未經聲明的類型不可使用
3)ANSI C只對內置類型的大小進行了規范:
char |double| folat |int |long int| pointer
64bits 1 8 4 4 8 8
32bits 1 8 4 4 4 4
從上表可以看出,對於前三者,大小是統一的,只有long int 和pointer(指針)在不同的機器上佔用了不同的大小。他們的規則是,long int和pointer的大小等於機器位長(8位一個位元組).最後說明一點,unsigned的關鍵字和類型組合和該類型的大小相同,因為有符號和無符號只對編譯器有效,機器對他一無所知。
『貳』 請問編程語法規則,是不是根據不同編譯器來定的
不,一個語言的語法是早就確定好的,它有一個統一標准——例如 ANSI C。
不同編譯器可能有些許不同,比如有的編譯器a=b=c結果很可能不一樣(所以我們很少這么用
但是大體上,一個語言的編譯器得出的結果是一樣的,是根據語法規則做出編譯器而非編譯器確定語法規則。
zhengshu a=0,編譯器肯定不認,理由是沒有這個type;但是你可以通過typedef自定義任意的類型。
int是一種type,而type varlist;是聲明變數的語法(int a; char b;)
你寫了int a=0;那麼這時編譯器做的就是在內存中開出一個能存int數據的空間,然後把0給填進去,再記錄下這塊內存的地址,並記住這個地址叫做a。至於分析代碼什麼的,就是編譯器的事情了。
——以上。
『叄』 C語言之初還有很多不統一的版本,沒有標准規范,另外還有幾個元老級比C語言還早的同行,怎麼創造語言
語言是依賴於編譯器的。當你寫出了一個全新的編譯器,你就發明了一種新的計算機語言。如果你想製作自己的編譯器判空,需要學習編譯原理(編譯原理我還沒學,沒法跟你講)這里簡單介紹一下這些語言是怎麼來的以及編譯器是如何工作的編譯器本身也是可執行文件,它的工作是遵循一定規則,將代碼轉化為二進制的可執行文件。如果一些編橡搭譯器遵循相同的轉化規則,那麼即使細節上有所不同,同樣的代碼也在這些編譯器上都能生成相同功能的可執行文件,這樣就可以說它們是使用同一種語言的編譯器。C標准就是這種規則的標准規范,也就是C語言的標准規范,可以方便代碼移植和交流。沒有C標準的時候,可能自己抄了別人的代碼,別人運行得好好的,結果自己這里一堆bug。最初的語言是機器語言,用二進制編寫,可以直接寫出可執行文件,不需要編譯器。後來因為機器語言太難記憶,太難閱讀,於是匯編語言被發明出來。匯編語言是將機器語言的指令換成一些容易辨識和記憶的符號的語言,匯編語言的編譯器是用機器語言寫的,稱為匯編器。匯編器工作是將那些符號替換成二進制的指令,於是就生成了可執行文件。最早的c語言編譯器是用匯編語言寫的,它將c語言代碼轉化為匯編代碼,再將匯編代碼轉化為可執行文件。後來的c語言編譯器都是用先前的c語言編譯器編寫的。後來的很多語言的編譯器也都是用c語言寫出來的。現在很少人直接使用編譯器,都是使用將寫代碼和編譯功能,以及其它功能集於一體的集成開發環境(IDE)如果你只是想簡單地替換一些符號,可以專門寫一個程序,用於將代碼文件的句號換成分號;進一步,可以集成文本編輯功能,在程序裡面寫完就轉化為c語言的代碼;更進一步,設置一個按鈕,鏈接編譯器,快捷地將轉化後的梁沖拿代碼編譯。你也可以使用EditPlus這樣的工具實現後兩個功能
『肆』 C語言和編譯器的關系
c語言,只是一個程序設計語言。不是理論,不是思想,不是體系結構。只是語言。
C語言的語法不一致並不是編譯器導致的。而是語言自然發展導致的。編譯器只是支持某種標準的c語言。
並且c語言現在也有標准了,ansi c。不同語法的問題可以不用關心。因為你基本上接觸不到另外一種語法。而且越新的編譯器,支持越好。
『伍』 C語言中:a+++b是什麼意思
就近原則,與編譯器無關。
要說在c語言中這充其量只能算作是「偽代碼」。
在vb、pascal等程序設計語言中,<>是「不等於」的意思。
在c中,「不等於」的關系應表示為「!=」
if(a
!=
b+c)
printf("a不等於b+c ");
else
printf("a等於b+c ");
(5)c語言的規則是由編譯器決定嗎擴展閱讀:
C語言的運算符主要用於構成表達式,同一個符號在不同的表達式中,其作用並不一致。下面按計算的優先順序,分別說明不同作用的表達式。需要特別指出,在C語言標准中,並沒有結合性的說法。
相同優先順序運算符,從左至右依次運算。注意後綴運算優先順序高於前綴。因此++i++應解釋為++(i++)。而與或非的運算優先順序都不一樣,因此a && b || b && c解釋為(a && b) || (b && c),合理使用優先順序可以極大簡化表達式。