㈠ java跨平台原理,其他語言為什麼不可以
C/C++語言都直接編譯成針對特定平台機器碼。如果要跨平台,需要使用相應的編譯器重新編譯。
Java源程序(.java)要先編譯成與平台無關的位元組碼文件(.class),然後位元組碼文件再解釋成機器碼運行。解釋是通過Java虛擬機來執行的。
位元組碼文件不面向任何具體平台,只面向虛擬機。
Java虛擬機是可運行Java位元組碼文件的虛擬計算機。不同平台的虛擬機是不同的,但它們都提供了相同的介面。
Java語言具有一次編譯,到處運行的特點。就是說編譯後的.class可以跨平台運行,前提是該平台具有相應的Java虛擬機。但是性能比C/C++要低。
㈡ c語言是如何跨平台的
標准C和標准C++都是源代碼級跨平台的,nbsp;也就是說你用標准C/C++寫的代碼在windows下編譯後就可以windows下運行,nbsp;在unix/linux下編譯後就可以在unix/linux下運行.跨硬體平台是靠編譯器的,比如要輸出一個字元,C里用printf(「C「);硬體平台a用中斷A輸出,nbsp;硬體b用中斷B輸出,nbsp;那麼就得有兩個不同的編譯器,nbsp;它們都用不同的方法實現C的功能
㈢ C語言和C#,C++三者的區別是什麼
區別是:
1、語言使用難度不同
C++難度大於C#大於C語言。
2、面向的對象不同
C 語言是面向過程的,而 C++ 是面向對象的,C# 是一種完全面向對象的語言。
3、函數形式不同
C 語言有標準的函數庫,它們鬆散的,只是把功能相同的函數放在一個頭文件中;而 C++ 對於大多數的函數都是有集成的很緊密,特別是 C 語言中沒有的 C++ 中的 API 是對 Window 系統的大多數 API 有機的組合,是一個集體。
C++ 不允許在一個構造函數中調用另外一個構造函數(稱為委派構造函數調用),而 C# 則允許。
4、圖形處理能力不同
C 語言標准中不包括圖形處理。
(3)c語言跨平台原理擴展閱讀:
C語言的優勢
C語言的優點很多,主要的有如下四點:
1、兼備高級語言與低級語言的優點,屬於一種中間語言。
2、它是一種結構化程序設計語言,非常適合結構化程序設計。
3、有較豐富的數據類型、運算符以及函數供以選用。
4、直接與內存打交道,使修改、編輯其他程序與文檔變得輕松,簡單。
㈣ 有關C語言學習的困惑:
先說一下,我也是計算機專業的,現在大二。雖然資歷不深,但我接觸的跟編程有關到東西卻不少,這一點不是我瞎掰的!因為我從剛接觸編程就喜歡上了程序設計,所以經常主動學習編程語言,比如到圖書館借書,動手寫程序,還有上網搜資料和下載,再加上我在編程方面算是比較喜歡思考了,所以學東西也比較快,我不能說我學的多好,但最起碼我感保證我花的時間比班裡其他人多。你說你想做信息管理系統和五子棋之類到程序,其實大一下學期我們到認為也是課程設計,我當時選的是圖書信息管理系統。本來在平時學習的時候也是寫一些小到程序,都是百行以內的!突然讓做這樣一個比較大的程序時,也覺得束手無策,但後來我還是花了一兩個月到時間做出來了,代碼是1200多行,剛開始對自己做的很不滿意,後來我又在暑假時間對我的那個程序做了很多改進,代碼更簡潔,功能也增加了很多,總共是2000多行,當我拿著自己寫到程序時,我卻有中感覺:如果這不是我寫的,要我理解整個程序也難了!!!
其實呢!程序卻是我自己寫的!
所以,不要認為閱讀代碼的能力差你寫代碼到能力就差!因為你讀的代碼是別人用自己的思想寫的,理解起來當然有點困難,但你自己寫的代碼卻是用你自己的思想寫的!
還有一句想奉告你的就是:再好的程序員甚至是黑客,也是一點一滴的基礎慢慢累積起來的,他們不是神! !
針對你補充的問題:當然要繼續學習C語言了!單從學科來講,C語言已經快成為一門公共必修課了,像英語一樣,現在幾乎每個專業都要學了,至少我們學校是這樣!而且你還是計算機專業的,你說要不要學?其次,C語言看似簡單基礎,實際用途很廣,它最大的優點就是運行速率快,是除匯編以外的其他程序語言所不能及的!記住這一點!以後你在寫程序時一定要盡可能發揮它的這一優勢。單從運行速率上來說,C語言的運行速率相當於Java的接近20倍!所以,C語言通常被用來開發操作系統。Java雖然運行速率慢,但其實也不錯,因為它具有跨平台性,語法更加規范,而且是面向對象的編程語言,我個人也比較喜歡,但我還是建議你先把C語言學好!因為你學好了C語言再學其它語言,包括C++和Java,都會覺得容易很多!希望你別再有疑問了,就做好現在的事情,學好C語言!至於以後該做什麼,我相信到時你自然會明白的!
㈤ c語言程序員
據調查,初中級C/C++軟體開發工程師的年薪為5萬-15萬元,高級軟體工程師則高達15萬-30萬元。市場最緊缺的C/C++技術總監或項目總監年薪更高。C/C++軟體工程師的年薪與JAVA軟體工程師和.NET軟體工程師的年薪相比一般平均要高於2-3萬。 據專家預測,C/C++軟體工程師是未來幾年最熱門和最受歡迎的職業之一。
……………………………………………………
看你問的問題,應該是對c++很感興趣,其實你可以自學c++。關於如何學習c++,我剛才看到一篇很不錯的文章,是一個專科生介紹自己如何自學c++,並找到c++的工作,裡面介紹了他的學習方法和學習過程,希望對你有幫助。
先做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。
一次偶然的機會,我才聽到c++這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習c++,然後給我介紹了一下c++現在的火熱情況,告訴我學c++多麼的有前景,給我了一份傳單,c++培訓的廣告。聽了她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下c++,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學c++了。於是我去找c++培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在網路知道看到一篇讓我很鼓舞的文章是一個c++高手介紹沒有基礎的朋友怎麼自學入門學c++,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。
主意一定,我就去搜索c++的視頻,雖然零星找到一些c++的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。
後來我又找到一份很好的視頻,是在IT學習聯盟推出的一份視頻《零基礎c++就業班》(喜歡《零基礎c++就業班》的可以復制 sina.lt/ceFM 粘貼瀏覽器地址欄按回車鍵即打開)。裡面的教程還不錯,很完整。
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C語言視頻教程學起,話說簡單,其實我還是很多不懂的,只要重復多看幾遍,就能看懂。C語言我差不多學了一個禮拜,接下來我就學了c++和數據結構演算法,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了c++的全部基礎。
接下來開始學習c++高級課程,老師幽默風趣而又輕松的課堂教課,使我發現原來學習c++並不是一件很難的事情。之前我把c++基礎學得還不錯,到了到了c++高級部分,我覺不又不是很難,可能老師太牛了,他能把復雜的問題講的比較通俗易懂,有些難點的地方我還是連續看了五六次,把他弄懂。每天下午6點下班後,吃了飯,馬上跑回家。看視頻,買了幾本筆記本。當時,為了編程還花幾百元了台二手的台式電腦,配置一般,但編程是足夠的。一邊看視頻,一邊記筆記,把重點都記下來,還一邊跟著老師敲代碼,為了能盡早學會c++。每天都堅持學5-6個小時。經常學到晚上一點多才睡覺。星期六,日不用上班,每天7點多起床,學到晚上11,12點。那段時間特別辛苦,特別累。在學習c++的三個多月里,除了吃飯睡覺工作,剩餘的時間都在學習,因為我知道自己的計算機基礎不是很好,也沒有學過什麼計算機,相對於那些科班的人來說我要比他們付出更多的努力。我只能咬緊牙關,堅持下去,我不能放棄,我要完成我的夢想,我要讓我的家人過上好日子。終於三個多月後我把c++教程里的內容和項目都學完了,在學項目的過程中我發現項目特別重要,他能把你學過的知識全部聯系起來,能更好的理解你所學的知識。還有學習過程中,動手很重要,要經常跟著老師動手敲,動手吧,跟著做,一行一行的跟著敲,再試著加一些自己的功能,按照自己的思路敲一些代碼,收獲遠比干聽大的多。 如果遇到暫時對於一些思路不能理解的,動手寫,先寫代碼,慢慢你就會懂了。
於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是c++開發程序員,但我也比較滿足,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。
…………………………………………
㈥ c語言和java的區別
語法不同;
單文件的編譯時間java比C語言快;
C語言可以直接操作內存,java不能直接操作;
C語言可以封裝動態庫,java不行;
C語言的代碼不容易跨平台,java的代碼容易跨平台;
C語言有指針,java沒有指針;
C語言可以直接操作串口,java需要第三方jar包支持;
C語言的線程更加靈活,java的線程都已經封裝好了;
C語言做單獨功能,可以增加效率,java適用做web應用開發;
unix是C語言編寫的,java也是C語言編寫的;
JAVA做web開發的時候,已經有很多成型的框架技術,C語言很少,且需要處理底層內容,對應不熟悉計算機原理的開發者難度很大;
JAVA的開源包太多了,C語言也有但是偏少,而且面向某個業務應用領域的框架沒java多。
㈦ c語言用什麼軟體編寫
可以編寫c語言的軟體有:Vim、C++編譯器、Dev-C++、Code::Blocks、Visual Studio等。
1、Vim
Vim是一個類似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是自由軟體。Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。
1999 年Emacs被選為Linuxworld文本編輯分類的優勝者,Vim屈居第二。但在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼文本編輯器大獎,又將Emacs推至二線, 總的來看, Vim和Emacs在文本編輯方面都是非常優秀的。
㈧ c語言能寫出什麼樣有意思的小程序
C語言是一門通用計算機編程語言,應用廣泛。
C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去掉不滿足條件的排列。
程序源代碼:
main()
{int i,j,k;printf( );for(i=1;i<5;i++)/*以下為三重循環*/for(j=1;j<5;j++)
for (k=1;k<5;k++),{f (i!=ki!=jj!=k) /*確保i、j、k三位互不相同*/printf(%d,%d,%d ,i,j,k); }}
題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高 於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提 成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
程序源代碼:
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf(%ld,i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i<=400000)
bonus=bonus2+(i-200000)*0.05;
else if(i<=600000)
bonus=bonus4+(i-400000)*0.03;
else if(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf(bonus=%d,bonus);
}
6.題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
程序分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後 的結果滿足如下條件,即是結果。
程序源代碼:
#include math.h
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{ x=sqrt(i+100); /*x為加上100後開方後的結果*/
y=sqrt(i+268); /*y為再加上168後開方後的結果*/
if(x*x==i+100y*y==i+268)/*如果一個數的平方根的平方等於該數,這說明此數是完全平方數*/
printf( %ld ,i);
}
}
7.題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。
程序源代碼:
main()
{
int day,month,year,sum,leap;
printf( please input year,month,day );
scanf(%d,%d,%d,year,month,day);
switch(month)/*先計算某月以前月份的總天數*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
defaultrintf(data error);break;
}
sum=sum+day; /*再加上某天的天數*/
if(year%400==0||(year%4==0year%100!=0))/*判斷是不是閏年*/
leap=1;
else
leap=0;
if(leap==1month>2)/*如果是閏年且月份大於2,總天數應該加一天*/
sum++;
printf(It is the %dth day.,sum); }
8.題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
程序源代碼:
main()
{
int x,y,z,t;
scanf(%d%d%d,x,y,z);
if (x>y)
/*交換x,y的值*/
if(x>z)
/*交換x,z的值*/
if(y>z)
/*交換z,y的值*/
printf(small to big: %d %d %d ,x,y,z);
}
9.題目:用*號輸出字母C的圖案。
程序分析:可先用<|>*<|>號在紙上寫出字母C,再分行輸出。
程序源代碼:
#include stdio.h
main()
{
printf(Hello C-world! );
printf( **** );
printf( * );
printf( * );
printf( **** );
}
10.題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!
程序分析:字元共有256個。不同字元,圖形不一樣。
程序源代碼:
#include stdio.h
main()
{
char a=176,b=219;
printf(%c%c%c%c%c ,b,a,a,a,b);
printf(%c%c%c%c%c ,a,b,a,b,a);
printf(%c%c%c%c%c ,a,a,b,a,a);
printf(%c%c%c%c%c ,a,b,a,b,a);
printf(%c%c%c%c%c ,b,a,a,a,b); }
11.題目:輸出9*9口訣。
程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
程序源代碼:
#include stdio.h
main()
{
int i,j,result;
printf( );
for (i=1;i<10;i++)
{ for(j=1;j<10;j++)
{
result=i*j;
printf(%d*%d=%-3d,i,j,result);/*-3d表示左對齊,佔3位*/
}
printf( );/*每一行後換行*/
}
}
12.題目:要求輸出國際象棋棋盤。
程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。
程序源代碼:
#include stdio.h
main()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
if((i+j)%2==0)
printf(%c%c,219,219);
else
printf( );
printf( );
}
}
13.題目:列印樓梯,同時在樓梯上方列印兩個笑臉。
程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。
程序源代碼:
#include stdio.h
main()
{
int i,j;
printf( );/*輸出兩個笑臉*/
for(i=1;i<11;i++)
{
for(j=1;j<=i;j++)
printf(%c%c,219,219);
printf( );
}
㈨ C語言和匯編語言的區別是什麼
區別如下:
(1)兩者編譯組成不同。匯編語言是將由0、1組成的機器語言用具有簡單語義的英文代碼表示,而C語言不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等。
(2)兩者被計算機識別的路徑不同。匯編語言通常用於對硬體的直接操控。而且C語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行。
(3)兩者用處不同。匯編語言通常用在程序中最核心的、控制硬體的代碼,一方面是安全,另一方面提高運行速度。而C語言通常用在計算機外用功能上。
(4)兩者學習難易程度不同。匯編語言所需要的編繪知識很多很復雜,經常被開發者使用。而C語言是一門很簡單方便的語言,編程者也就不需要有太多的專業知識。
計算機語言(Computer Language)指用於人與計算機之間通訊的語言。計算機語言是人與計算機之間傳遞信息的媒介。計算機系統最大特徵是指令通過一種語言傳達給機器。計算機語言從低級到高級可以分為:
(1)機器語言,即由0、1組成的機器硬體可以識別的語言;
(2)低級語言,即匯編語言
(3)中級語言,如C語言
(4)高級語言,如C++,JAVA,C#等。
(9)c語言跨平台原理擴展閱讀:
如今通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言和機器語言實質是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,容易識別和記憶。源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於低級語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如流行的vb、vc、foxpro、delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:解釋類和編譯類。
㈩ c語言為什麼能跨平台或者是如何跨平台的
c語言能跨平台是因為各個平台有相應的c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能,但是這些二進制文件本身是不一樣的。
exe就是2進制的,但不完全是原來程序的代碼,還包括了windows系統的一些代碼。
科普一下,C最早是出現在Unix下的,Windows那都是後話了,C出現的時候Windows還沒開發出來呢。
C有個比較特別的稱呼,叫中級語言,因為它有高級語言的特性又能跟底層硬體很好的交互所以才有這么個說法。DOS時代在C裡面嵌上一段匯編直接從並口讀個數上來那是很流行的,現在沒見誰在VC裡面這么干吧。Windows也不讓啊。想訪問硬體怎麼也得通過驅動。
C在多種平台下可以實現代碼級的共享,跨平台就需要重新編譯了。
但是,我也見過有的軟體是可以在多種平台上運行了,可能有什麼特別的技術,可以先識別一下操作系統,再運行相應的代碼。這個應該是在編譯的時候有特殊的技巧。
C編譯、連接器網上有現成的代碼,一般不是很專業的技術人員沒有去研究它。我一直把玩編譯原理的視為天人,有能力把編譯原理那本書看完的就很不容易了,再要能領會其中精要那就成才了,能把龍書虎書鯨書都搞明白的那就是一流專家了。