『壹』 每個編譯器都不一樣么 c語言一般用什麼編譯器 每次一種編譯器不能編譯 另一種卻能編譯出
編譯器就是c語言編譯成二進制的東西,
不同的編譯器是不同的,
比如16位系統和32位系統的編譯器就不同,因為16位的認為int是2位元組,32位的則認為是4個位元組。
另外
linux上的編譯器跟windows下的編譯器也不同,linux上的認為內核空間佔1G,而windows下則認為佔2G,
此外兩個系統對環境變數以及其他的設置也不同所以編譯器更不能用。
而且不同的CPU的指令集時不同的,所以同樣int
a
=1
最後被編譯成的二進制代碼也是不同的。
C語言的編譯器有很多,windows下的編譯器也有很多,不同的編譯器可能會做一些不同的優化,linux下的gcc也可以添加選項讓他編譯windows下運行的程序。
main(int
argc,char*argv[
】
)
argc
是你的參數個數
argv是你的參數。
比如你最終程序叫
add
那麼
你在命令行執行add
1
2
那麼argc
=3
第一個參數使你的add,
第二個第三個就是
1
2,
在函數內部你就可以獲取這倆參數進行相加然後列印
visual
是個IDE,集成開發環境,已經集成好了windows下使用的編譯器連接器
等,
編寫代碼完成後直接點擊編譯就行了。
IDE的默認編譯器是可以更改的,不同的IDE設置不同。
『貳』 C語言的編譯器為什麼有許多不同的版本並且在不同的編譯器版本下C語言的語法規則也不盡相同
新的版本都是基於舊的版本升級過來的,以此來改善編譯器的性能、增加對新平台的支持以及提高競爭能力。
不同的編譯器支持的標准語法是一致的(不然沒資格稱C編譯器),但是每個編譯器自身可以添加額外的語法、庫來擴展語言的表達能力,這就是所謂的xx編譯器擴展。使用語言擴展通常能獲得較高的性能和靈活性,但是損失了跨平台性。
不僅僅是編譯器有很多版本,語言本身都有很多版本,目前C語言的版本是C11,下一個版本為C1y。
『叄』 請問編程語法規則,是不是根據不同編譯器來定的
不,一個語言的語法是早就確定好的,它有一個統一標准——例如 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語言沒有關系的。
不同的OS提供的底層函數不同,提供的api自然不同了。
『伍』 不同的c++軟體用的編程語言不同嗎
編程語言和編譯器是兩個不同的東西。
不同的編譯器同一語言的語法都是一樣的。就拿C++來說,他們都遵循C++11/14/17標准。
不同編譯器的區別就是他們的字體環境,mingw版本,關鍵字識別等有區別,語言方面是沒有區別的。
本回答來自工中號一匹大懶蟲。
如果滿意請採納,不滿意請繼續提問。
C++簡介
在C的基礎上,一九八三年又由貝爾實驗室的Bjarne Strou-strup推出了C++。 C++進一步擴充和完善了C語言,成為一種面向鉛並做 對象的程槐衡序設計語言。C++目前流行的集成開發環境最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++2017。C++提出了一些更為深入的概念,它所支持的這些面向對象的概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。
C和C++關系
但是,C是C++的基礎,C++語言和C語言蔽圓在很多方面是兼容的。因此,掌握了C語言,再進一步學習C++就能以一種熟悉的語法來學習面向對象的語言,從而達到事半功倍的目的。
『陸』 不同的c語言編譯系統差別在哪裡代碼是否 存在兼容性的問題
ANSI
C
一般都可以支持,但也涉及到不同版本的C標準的兼容性問題,比如VC6不支持C99,VS2003,2005,2008,20120等就可以部分支持C99標准;而且很多標准並沒有規定實現,不同的編譯器實現可能不同,比如C標准只規定了short<=int<=long,但並沒有規定位元組數,導致不同的編譯器數據類型的大小各不相同。
非
ANSI
C標準的話,不同的編譯器一般都有不同的實現,需要分別實現。
在移植到不同編譯器的時候這些都要注意處理,比較常規的做法是數據類型和函數等自己根據不同編譯器封裝成一個統一的格式,在程序中使用封裝後的數據類型或函數,而不要使用原生類型,這樣在移植時只需要在封裝的地方根據編譯器的不同進行修改就可以了,不需要再修改源代碼。
『柒』 相同的c語言代碼,在不同的編譯器,不同的操作系統上面生成的指令是不是不同的
不同的CPU生成的指令不一樣、不同的編譯器C語言實現方式不一樣、不同的操作系統API不一樣。使用C語言只能做到源代碼級別的跨平台和跨編譯器。
『捌』 c語言在不同系統中有區別嗎,在哪,還有人說什麼編譯器不同,到底是系統原因還是編譯器
在不同的系統中C語言沒有區別,有區別的是不同的編譯器編譯後的機器碼不同,就是說函數的C語言的底層實現可能不同,但是C語言的函數作用相同。與系統的關系也一樣,系統不同實現方法不同,但是作用相同。
使用不同的編譯器,不同的系統,程序運行結果是相同的
『玖』 C語言的編譯器是不是都一樣
不一樣,支持的語言特性不同,編譯出的代碼效率不同。當然,還有就是編譯出的程序在不同的系統上跑的。比較好的c編譯器就是gcc和vc了。這兩是x86上用的最多的c編譯器還有像Intel的ICC也不錯,優化很好。
『拾』 c語言在各個操作系統語法一樣嗎
linux下的C語言編程輪迅與windows下的皮桐旁C語言編程從語法上看沒有區別,
但燃橡是C語言是有標準的,叫做C語言的必須符合國際標准。區別在於Windows通過頭文件windows.h提供的Windows API函數,而Linux則提供了它自己的函數。
基本的C庫函數,如stdio.h,string.h等也是標准化的,所有C編譯器都必須提供這些函數,典型的如printf, strcpy等。
問題是在於,如果你要調用系統功能,比如在Windows下,則必須通過Windows API來實現,因此,這部分代碼就不會和Linux下兼容。