微軟的C語言和其他C語言有什麼區別嗎

時間 2021-05-04 15:32:37

1樓:隔壁的蟲子

不知道樓主說的是所謂「微軟的c」是指什麼概念……

(個人意見,僅供參考)

1.如果是指微軟推出的c語言的編譯器ms c的話,其實就是c語言各個編譯器之間的區別。如果你想深入了解,最好是學習下c標準的制定歷史。

e.gc98、c99。微軟推出的ms c是一款嵌入式系統編譯器。

c語言命令要被硬體識別並執行,必須通過編譯器編譯。編譯器分為前端、中端、後端。前端與各種計算機語言寫的程式打交道,後端與處理器的基本指令集接軌。

所以如果使用c程式設計時,要達到最高的效率,最好能夠很了解所使用的c編譯器。先試驗一下每條c語言編譯以後對應的組合語言的語句行數,這樣就可以很明確的知道效率。在今後程式設計的時候,使用編譯效率最高的語句,這樣就能確保微控制器c程式設計的時候同樣的功能不同的c程式,編譯效率最高。

但是各家的c編譯器都會有一定的差異,優秀的嵌入式系統c編譯器**長度和執行時間僅比以組合語言編寫的同樣功能程度長5-20%,所以不同廠家的c編譯器的編譯效率也會有所不同。

至於用不同的編譯器編寫的程式能否在lunix下執行的問題其實就是語言的移植問題。如果兩個不同版本的c語言編譯器是完全相容的,那麼用其中任何乙個版本的c語言寫的源程式,都可以在另乙個版本的c編譯器上不加修改的成功編譯。

下面列出常用的c編譯器及其所支援的平台。

①mingw (gcc for windows)

開源、gnu/gcc 編譯器的 windows 版、32 位、編譯**優化、gcc 支援平台最多、支援 c99/c++98 標準 。

②open watcom c/c++

開源、16/32 位、編譯**優化

digital mars c/c++ compiler

16/32 位,編譯、連線速度快、**優化、只部分支援 c99 標準

③borland c/c++ 5.5

只部分支援 c99 標準

④ms visual c++ toolkit 2003

c/c++ 執行時庫(c/c++ run-time library)、聯結器(linker)、micro$oft .net 執行時庫、和程式例子。但不包括 ide。

只部分支援 c99 標準。

⑤lcc

開源、32 位、支援 c99 標準、純 c (不支援 c++) 編譯器

…………………

由於c語言的可移植性相對於其他的語言是很強的。所以,ms c編譯的程式一般情況下lunix是可以執行的。不過也有很多的具體細節問題另當別論。

2.如果你這裡「微軟的c語言」指的是微軟推出的c sharp(c#)的話。當然就不能在lunix下執行了。

c#是一種最新的、物件導向的程式語言。c#與c/c++具有極大的相似性,熟悉類似語言的開發者可以很快的轉向c#。 但其中的很多標準與c是不一樣的。

2樓:lee富榮

微軟的c和ansi/iso的並非完全一樣.如果剛開始學c,建議還是學習標準的c.用linux下的gcc編譯器就很好.基本實現了最新的c 版本(c99).

安裝linux時,gcc可能是可選的.注意要選中.

另外, linux可以和windows安裝在同一臺電腦上.

3樓:

c語言沒有區別!只是各個系統編譯器的區別.在有些系統中,有時候運算的結合性是從左到右的,而在另一些系統中卻是從右往左的……。總體來說區別不是很大。

4樓:

c語言沒有區別,但不同的系統編成方式不同,除了windows系列一類的一樣,不能通用

5樓:匿名使用者

微軟得是解釋性的,其他的是編譯型的。

微軟的不是物件導向的,其他的是。

6樓:匿名使用者

本質語法是一樣的,不過各公司都有可能有自己特有的庫函式,也就是封裝好了很多好功能。比如微軟的mfc,就封裝了很多東西,開發起來比較省力氣。borlannd的編譯器技術較好,編譯出來的**效率高。

還有watcom、等等的編譯器,各有千秋。

7樓:

理論解釋太複雜,玩多了就知道了,但說不清楚

8樓:匿名使用者

c能編寫unix系統 呵呵`

先學習c++ 再回頭看看 c 你會知道很多啊

9樓:匿名使用者

本質相同,但庫函式可能有點不同,但也不影響。

-> 在c語言中是什麼意思?

10樓:兔丞飛

「->」是乙個整體,它是用於指向結構體子資料的指標,用來取子資料。

換種說法,如果我們在c語言中定義了乙個結構體,然後申明乙個指標指向這個結構體,那麼我們要用指標取出結構體中的資料,就要用到「->」。

問題中的p=p->next ,意思是將p指向的乙個結構體例項中的自資料next賦值給p。

擴充套件資料

struct 結構體型別名 *指標名;//結構體指標

struct 結構體型別名 *指標名 = &乙個結構體的名字;//結構體指標並賦初值

struct 結構體型別名 *指標名 = new struct 結構體型別名;//結構體指標並用new申請記憶體

struct 結構體型別名 *指標名 =(struct 結構體型別名 *)malloc(sizeof(struct 結構體型別名))//結構

體指標並用malloc申請記憶體 使用應包含標頭檔案stdlib.h

//物件指標的定義方法略同。

11樓:幻の上帝

->在c語言中稱為間接引用運算子,是二目運算子,優先順序同成員運算子「.」。

用法:p->a,其中p是指向乙個結構體的指標,a是這個結構體型別的乙個成員。表示式p->a引用了指標p指向的結構體的成員a。

例如:struct t

s;struct t* p=&s;

那麼,p->a相當於s.a。

顯然,有個等價寫法:(*p).a,和p->a完全等效。

----

[原創回答團]

12樓:周啊護衛

舉個例子:

struct data

; /*定義結構體*/struct data * p;/*定義結構體指標*/struct data a = ;/*宣告變數a*/int x;/*宣告乙個變數x*/

p = &a ; /*讓p指向a*/

x = p->a;/*這句話的意思就是取出p所指向的結構體中包含的資料項a賦值給x*/

/*由於此時p指向a,因而 p->a == a.a,也就是1*/

13樓:冼恭藺酉

是條件運算子

。條件運算子是c語言中唯一的三目運算子,就是說他有三個運算物件。條件運算子的形式是「?:」由他構成的表示式稱為條件表示式。形式為:

表示式1?表示式2:表示式3

運算功能是。先計算表示式1的值,若值為非0,則計算表示式2的值,並將表示式2的值作為整個條件表示式的結果;若表示式1的值為0,則計算表示式3的值,並將表示式3的值作為整個條件表示式的結果。

比如有以下條件表示式

(a>b)?a+b:a-b

a=8b=4時,計算a+b=12

,所以表示式結果為12

a=4b=8時,計算a-b=-4,所以表示式結果為-4

14樓:幹楚說嫣

指標就是指向乙個

特定記憶體位址的乙個變數。簡單的說可以理解為乙個一維的線性空間,其中的每乙個數對應乙個儲存單元,就是1個位元組。指標有兩個性質:

指向性和偏移性。指向性指的是指標一定要有乙個確定的指向,偏移性就是說指標可以加上乙個數後偏移位置!指向別的儲存空間。

指標的應用往往體現在陣列,我們從陣列開始解釋指標的偏移。陣列就是許多的變數,它的乙個重要特徵就是在記憶體空間中連續地存放,而且是按下標順序存放。比如我們定義乙個有100個變數的一維整型陣列,它一定從記憶體的某乙個儲存單元(這個儲存單元是電腦隨機分配的)開始按陣列下標順序存放,連續占用100*4=400個位元組。

當我們定義乙個陣列時,系統就會自動為它分配乙個指標,這個指標指向陣列的首位址。

為了讓系統了解每一次指標偏移的單位,也為了方便程式設計人員進行指標偏移(讓程式設計人員記住乙個整形變數占用4位元組,乙個字元型變數占用1位元組……等等是很麻煩的),不用每次去計算要偏移多少個位元組,c語言引入了指標的基型別的概念。基型別的作用就是*讓系統了解某個指標每次偏移的位元組數*。比如,對於乙個字元型指標,它每次偏移(比如p=p+1)所起到的作用就是讓指標偏移1個位元組;而對於乙個整型指標,它每次偏移就應該是4個位元組。

這樣運算元組時就帶來了方便。比如對於乙個指向某個整型陣列起始儲存單元(稱為首位址)的指標p,p=p+1就表示將該指標指向這個陣列的下乙個元素的儲存單元,即向後移動4位元組,而不僅僅是移動乙個儲存單元(即移動1位元組)。

參考

15樓:猶金生邱鳥

如果乙個指標被定義為結構型別,那麼要想獲取這個指標所指向的結構裡的內容就要用到->

例如:struct

something

number;

something

*nptr

=&number

//指向name結構型別的指標

inta

=nptr->a;

floatb=

nptr->b;

//通過->來獲取nptr所指向的puppy的a和b/*而不是用

inta

=nptr.a;

intb

=nptr.b*/

16樓:

結構的成員。

typedef struct stu stu;

stu *s; // 結構stu,物件 是 指標 *s 時// 它的成員id,total,mark[0],...mark[3]:

s->id

s->total

s->mark[0],...,s->mark[3],

17樓:

指向的意思吧,指標用常用的比如說指標p (*p)->b,b=8

就是說p指向記憶體b=8的這塊記憶體

18樓:匿名使用者

->指向符號,一般在指標和結構體都會見到。

19樓:匿名使用者

^按位異或的意思。就是「不同為1

c語言中/與%的區別

20樓:水閏愛樹木

區別如複下表:

擴充套件資料具體區別制的例子:

bai1、c 語言輸入輸出du

printf(「a=%d,b=%d 」zhi,a,b);

scanf(「%d%d%d 」,&a,&b,&c);

2、vb 語言的輸入輸出:

inputbox(「x=」,」輸入 x 的值dao 」)print 「x=」;x

21樓:火箭羊科技文化傳媒

而且,這兩種運算子,還分為字首運算和字尾運算

如:int a=5;

a++; //字尾運算,表示a=a+1 = 5+1=6

a--; //字尾運算,表示a=a-1 = 6-1=5

--a; //字首運算,表示a=a-1 = 5-1=4

++a; //字首運算,表示a=a+1 = 4+1=5

以上單獨使用自增1或自減1運算子,字首運算和字尾運算沒有區別,其結果都是完成變數a的自加1或自減1

字首運算和字尾運算的區別在於:字首運算,先運算,再使用變數;字尾運算,先使用變數,再運算。如:

int a=5;

printf("a=%d\n", ++a ); //字首運算,先運算a=a+1=5+1=6,再使用變數a,輸出結果a=6

a=5; //重新賦值為5

printf("a=%d\n", a++ ); //字尾運算,先使用變數a,輸出結果a=5,再運算a=a+1=5+1=6

void main()

C語言裡的和有什麼不同,c語言 和 有什麼不同?

才是邏輯與,常用於表示式之間,比如x x 1 y y 0就是真和假相與,結果為假 即0 而 是按位與,用於兩個二進位制數之間逐位求與,比如二進位制數0110 1100的結果就是0100 另外 可以作位址符 更常見的應用 格式 變數名。比如int a的意思就是位址a中存有整型變數 首先,你說反了。是按...

如果要自學C語言和C 語言有什麼書好

c 完全不完全資源導引 書籍篇 三軍未動,資料先行。書山碟海,只列其中最好的。統統都可以emule找到。1.快速入門 accelerated.c 2000 essential c 2002 lipman 兩本都是開篇就講c stl,絕口不提c,而且都有中文版。2.枕頭參考 c primer.4th ...

C語言和的區別,和的區別是什麼,c語言裡 和 的區別

1988球球 邏輯與 是邏輯運算子。邏輯與 相當於生活中說的 並且 就是兩個條件都同時成立的情況下 邏輯與 的運算結果才為 真 是位運算子。c語言與c 的區別有很多 1,全新的程式程式思維,c語言是程序導向的,而c 是物件導向的。2,c語言有標準的函式庫,它們鬆散的,只是把功能相同的函式放在一個標頭...