當前位置:首頁 » 編程軟體 » c語言編譯器大師時間表

c語言編譯器大師時間表

發布時間: 2023-06-29 07:44:30

A. c語言什麼時候誕生

1969-1973年在美國電話電報公司(AT&T)貝爾實驗室開始了C語言的最初研發。根據C語言的發明者丹尼斯·里奇 (Dennis Ritchie) 說,C 語言最重要的研發時期是在1972年。
C語言之所以命名為C,是因為C語言源自Ken Thompson發明的 B語言,而B語言則源自BCPL語言。
C語言的誕生是和UNIX操作系統的開發密不可分的,原先的UNIX操作系統都是用匯編語言寫的,1973年UNIX操作系統的核心用C語言改寫,從此以後,C語言成為編寫操作系統的主要語言。

B. c語言的發展史

C語言誕生於美國的貝爾實驗室,由D.M.Ritchie以B語言為基礎發展而來,在它的主體設計完成後,Thompson和Ritchie用它完全重寫了UNIX,且隨著UNIX的發展,c語言也得到了不斷的完善。為了利於C語言的全面推廣,許多專家學者和硬體廠商聯合組成了C語言標准委員會,並在之後的1989年,誕生了第一個完備的C標准,簡稱「C89」,也就是「ANSI c」,截至2020年,最新的C語言標准為2017年發布的 「C17」。
C語言之所以命名為C,是因為C語言源自Ken Thompson發明的B語言,而B語言則源自BCPL語言。
1967年,劍橋大學的Martin Richards對CPL語言進行了簡化,於是產生了BCPL(Basic Combined Programming Language)語言。
20世紀60年代,美國AT&T公司貝爾實驗室(AT&T Bell Laboratory)的研究員Ken Thompson閑來無事,手癢難耐,想玩一個他自己編的,模擬在太陽系航行的電子游戲——Space Travel。他背著老闆,找到了台空閑的機器——PDP-7。但這台機器沒有操作系統,而游戲必須使用操作系統的一些功能,於是他著手為PDP-7開發操作系統。後來,這個操作系統被命名為——UNIX。
1970年,美國貝爾實驗室的 Ken Thompson,以BCPL語言為基礎,設計出很簡單且很接近硬體的B語言(取BCPL的首字母)。並且他用B語言寫了第一個UNIX操作系統。
1971年,同樣酷愛Space Travel的Dennis M.Ritchie為了能早點兒玩上游戲,加入了Thompson的開發項目,合作開發UNIX。他的主要工作是改造B語言,使其更成熟。
1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
1973年初,C語言的主體完成。Thompson和Ritchie迫不及待地開始用它完全重寫了UNIX。此時,編程的樂趣使他們已經完全忘記了那個"Space Travel",一門心思地投入到了UNIX和C語言的開發中。隨著UNIX的發展,C語言自身也在不斷地完善。直到2020年,各種版本的UNIX內核和周邊工具仍然使用C語言作為最主要的開發語言,其中還有不少繼承Thompson和Ritchie之手的代碼。
在開發中,他們還考慮把UNIX移植到其他類型的計算機上使用。C語言強大的移植性(Portability)在此顯現。機器語言和匯編語言都不具有移植性,為x86開發的程序,不可能在Alpha、SPARC和ARM等機器上運行。而C語言程序則可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C源代碼編譯、連接成目標二進制文件之後即可運行。
1977年,Dennis M.Ritchie發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》。
C語言繼續發展,在1982年,很多有識之士和美國國家標准協會為了使這個語言健康地發展下去,決定成立C標准委員會,建立C語言的標准。委員會由硬體廠商、編譯器及其他軟體工具生產商、軟體設計師、顧問、學術界人士、C語言作者和應用程序員組成。1989年,ANSI發布了第一個完整的C語言標准——ANSI X3.159—1989,簡稱「C89」,不過人們也習慣稱其為「ANSI C」。C89在1990年被國際標准組織ISO(International Standard Organization)一字不改地採納,ISO官方給予的名稱為:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被簡稱為「C90」。1999年,在做了一些必要的修正和完善後,ISO發布了新的C語言標准,命名為ISO/IEC 9899:1999,簡稱「C99」。
在2011年12月8日,ISO又正式發布了新的標准,稱為ISO/IEC9899: 2011,簡稱為「C11」。

C. c語言有哪些編譯器

1、visualc++6.0(win8系統下不好用,C/C++)-MicrosoftVisualC++;

2、visualstudio(2005、2008、2010、2012、2013)-MicrosoftVisualStudio;

3、win-tc非常方便:不騙你,2000/XP/7都可以用;

4、Code::Blocks(win7、8都可以用);

5、TurbC(只能編譯C語言);

6、gcc(GNU編譯器套件);

7、DEVC++;

8、C-Free;

9、BorlandC++、WaTComC++、BorlandC++Builder、GNUDJGPPC++、Lccwin32CCompiler3.1、HighC、MyTc等,由於C語廳激言比較成熟,所以編程環境很多;

10、還常用souceinsight,在工作中還用Labwindows編程,直接調試運行,不過那是有工程背慎李景,有工作經驗的扮孝襪技術人員用的。


D. 丹尼斯·里奇(C語言之父)的英文介紹 要英文!要長的 不能太短!!!!好的補50分!!急用!!!!!

Dennis MacAlistair Ritchie (born September 9, 1941) is an American computer scientist notable for his influence on C and other programming languages, and on operating systems such as Multics and Unix. He received the Turing Award in 1983 and the National Medal of Technology in 1998. Ritchie was the head of Lucent Technologies System Software Research Department when he retired in 2007.

Born in Bronxville, New York, Ritchie graated from Harvard with degrees in physics and applied mathematics. In 1967, he began working at the Bell Labs' Computing Sciences Research Center.

Ritchie is best known as the creator of the C programming language and a key developer of the Unix operating system, and as co-author of the definitive book on C, The C Programming Language, commonly referred to as 'K/R' or K&R (in reference to the authors Kernighan and Ritchie).

Ritchie's invention of C and his role in the development of Unix alongside Ken Thompson, has placed him as an important pioneer of modern computing. The C language is still widely used today in application and operating system development and its influence is seen in most modern programming languages. Unix has also been influential, establishing concepts and principles that are now well-established precepts of computing. The popular linux operating system and its tools are descendants of Ritchie's work and the Windows operating systems include Unix compatibility tools and C compilers for developers.

Ritchie has said that creating the C language 'looked like a good thing to do' and that anyone else in the same place at the same time would have done the same thing, though Bell Labs colleague Bjarne Stroustrup, developer of C++, said that "if Dennis had decided to spend that decade on esoteric math, Unix would have been stillborn."

Following the success of Unix, Ritchie continued research into operating systems and programming languages with contributions to the Plan 9 and Inferno operating systems and the Limbo programming language.

In 1983, Ritchie and Ken Thompson jointly received the Turing Award for their development of generic operating systems theory and specifically for the implementation of the UNIX operating system. Ritchie's Turing Award lecture was titled, "Reflections on Software Research."

On April 27, 1999, Thompson and Ritchie jointly received the 1998 National Medal of Technology from President Bill Clinton for co-inventing the UNIX operating system and the C programming language which together have led to enormous advances in computer hardware, software, and networking systems and stimulated growth of an entire instry, thereby enhancing American leadership in the Information Age

Dennis Ritchie is often referred to as "dmr" (his Bell Labs email address) in technical discussion groups.

E. C語言編譯器

目前比較流行的包括微軟的Visual C++,GCC, Turbo C等。

個人比較推薦GCC,對於初學者而言,雖然Visual C++比較快上手,它幫助開發人員快速新建工程,並添加工程相關代碼,只需要在這個平台之上直接開發代碼即可,但是這個平台把C語言的一些很關鍵的東西給省略了,例如Makefile,例如一些基本的庫函數的引用之類的。

GCC能讓開發人員從編譯器的角度出發,把程序的編譯,鏈接等一步一步都完全展示出來,而且也是建立的ANSI C的基礎上的,推薦GCC。開發者可以利用一些簡單的文本編輯器進行程序的編寫,然後通過GCC來編譯,這樣可以在起步就不收到包括Visual C++的限制,讓初學者可以更關注與整個程序的編譯過程。

當然如果說到調試方法的話,建議採用Visual C++,它提供的單步跟蹤功能確實非常好,不過在GCC下也可以用GDB進行操作,一起看個人的喜好。

F. c語言創立時間

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。[1] 目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。

G. C語言中時間的函數

一.概念

在C/C++中,通過學習許多C/C++庫,你可以有很多操作、使用時間的方法。但在這之前你需要了解一些「時間」和「日期」的概念,主要有以下幾個:

1. 協調世界時,又稱為世界標准時間,也就是大家所熟知的格林威治標准時間(Greenwich Mean Time,GMT)。比如,中國內地的時間與UTC的時差為+8,也就是UTC+8。美國是UTC-5。

2. 日歷時間,是用「從一個標准時間點到此時的時間經過的秒數」來表示的時間。這個標准時間點對不同的編譯器來說會有所不同,但對一個編譯系統來說,這個標准時間點是不變的,該編譯系統中的時間對應的日歷時間都通過該標准時間點來衡量,所以可以說日歷時間是「相對時間」,但是無論你在哪一個時區,在同一時刻對同一個標准時間點來說,日歷時間都是一樣的。

3. 時間點。時間點在標准C/C++中是一個整數,它用此時的時間和標准時間點相差的秒數(即日歷時間)來表示。

4. 時鍾計時單元(而不把它叫做時鍾滴答次數),一個時鍾計時單元的時間長短是由CPU控制的。一個clock tick不是CPU的一個時鍾周期,而是C/C++的一個基本計時單位。

我們可以使用ANSI標准庫中的time.h頭文件。這個頭文件中定義的時間和日期所使用的方法,無論是在結構定義,還是命名,都具有明顯的C語言風格。下面,我將說明在C/C++中怎樣使用日期的時間功能。

二. 介紹

1. 計時

C/C++中的計時函數是clock(),而與其相關的數據類型是clock_t。在MSDN中,查得對clock函數定義如下:

clock_t clock( void );

這個函數返回從「開啟這個程序進程」到「程序中調用clock()函數」時之間的CPU時鍾計時單元(clock tick)數,在MSDN中稱之為掛鍾時間(wal-clock)。其中clock_t是用來保存時間的數據類型,在time.h文件中,我們可以找到對它的定義:

#ifndef _CLOCK_T_DEFINED

typedef long clock_t;

#define _CLOCK_T_DEFINED

#endif

很明顯,clock_t是一個長整形數。在time.h文件中,還定義了一個常量CLOCKS_PER_SEC,它用來表示一秒鍾會有多少個時鍾計時單元,其定義如下:

#define CLOCKS_PER_SEC ((clock_t)1000)

可以看到每過千分之一秒(1毫秒),調用clock()函數返回的值就加1。下面舉個例子,你可以使用公式clock()/CLOCKS_PER_SEC來計算一個進程自身的運行時間:

void elapsed_time()

{

printf("Elapsed time:%u secs. ",clock()/CLOCKS_PER_SEC);

}

當然,你也可以用clock函數來計算你的機器運行一個循環或者處理其它事件到底花了多少時間:

/* 測量一個事件持續的時間*/

/* Date : 10/24/2007 */

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

int main( void )

{

long i = 10000000L;

clock_t start, finish;

double ration;

/* 測量一個事件持續的時間*/

printf( "Time to do %ld empty loops is ", i );

start = clock();

while( i-- ) ;

finish = clock();

ration = (double)(finish - start) / CLOCKS_PER_SEC;

printf( "%f seconds ", ration );

system("pause");

}

在筆者的機器上,運行結果如下:

Time to do 10000000 empty loops is 0.03000 seconds

上面我們看到時鍾計時單元的長度為1毫秒,那麼計時的精度也為1毫秒,那麼我們可不可以通過改變CLOCKS_PER_SEC的定義,通過把它定義的大一些,從而使計時精度更高呢?通過嘗試,你會發現這樣是不行的。在標准C/C++中,最小的計時單位是一毫秒。

2.與日期和時間相關的數據結構

在標准C/C++中,我們可通過tm結構來獲得日期和時間,tm結構在time.h中的定義如下:

#ifndef _TM_DEFINED

struct tm {

int tm_sec; /* 秒 – 取值區間為[0,59] */

int tm_min; /* 分 - 取值區間為[0,59] */

int tm_hour; /* 時 - 取值區間為[0,23] */

int tm_mday; /* 一個月中的日期 - 取值區間為[1,31] */

int tm_mon; /* 月份(從一月開始,0代表一月) - 取值區間為[0,11] */

int tm_year; /* 年份,其值等於實際年份減去1900 */

int tm_wday; /* 星期 – 取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推 */

int tm_yday; /* 從每年的1月1日開始的天數 – 取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 */

int tm_isdst; /* 夏令時標識符,實行夏令時的時候,tm_isdst為正。不實行夏令時的進候,tm_isdst為0;不了解情況時,tm_isdst()為負。*/

};

#define _TM_DEFINED

#endif

ANSI C標准稱使用tm結構的這種時間表示為分解時間(broken-down time)。

而日歷時間(Calendar Time)是通過time_t數據類型來表示的,用time_t表示的時間(日歷時間)是從一個時間點(例如:1970年1月1日0時0分0秒)到此時的秒數。在time.h中,我們也可以看到time_t是一個長整型數:

#ifndef _TIME_T_DEFINED

typedef long time_t; /* 時間值 */

#define _TIME_T_DEFINED /* 避免重復定義 time_t */

#endif

大家可能會產生疑問:既然time_t實際上是長整型,到未來的某一天,從一個時間點(一般是1970年1月1日0時0分0秒)到那時的秒數(即日歷時間)超出了長整形所能表示的數的范圍怎麼辦?對time_t數據類型的值來說,它所表示的時間不能晚於2038年1月18日19時14分07秒。為了能夠表示更久遠的時間,一些編譯器廠商引入了64位甚至更長的整形數來保存日歷時間。比如微軟在Visual C++中採用了__time64_t數據類型來保存日歷時間,並通過_time64()函數來獲得日歷時間(而不是通過使用32位字的time()函數),這樣就可以通過該數據類型保存3001年1月1日0時0分0秒(不包括該時間點)之前的時間。

在time.h頭文件中,我們還可以看到一些函數,它們都是以time_t為參數類型或返回值類型的函數:

double difftime(time_t time1, time_t time0);

time_t mktime(struct tm * timeptr);

time_t time(time_t * timer);

char * asctime(const struct tm * timeptr);

char * ctime(const time_t *timer);

此外,time.h還提供了兩種不同的函數將日歷時間(一個用time_t表示的整數)轉換為我們平時看到的把年月日時分秒分開顯示的時間格式tm:

struct tm * gmtime(const time_t *timer);

struct tm * localtime(const time_t * timer);

通過查閱MSDN,我們可以知道Microsoft C/C++ 7.0中時間點的值(time_t對象的值)是從1899年12月31日0時0分0秒到該時間點所經過的秒數,而其它各種版本的Microsoft C/C++和所有不同版本的Visual C++都是計算的從1970年1月1日0時0分0秒到該時間點所經過的秒數。

3.與日期和時間相關的函數及應用

在本節,我將向大家展示怎樣利用time.h中聲明的函數對時間進行操作。這些操作包括取當前時間、計算時間間隔、以不同的形式顯示時間等內容。

4. 獲得日歷時間

我們可以通過time()函數來獲得日歷時間(Calendar Time),其原型為:

time_t time(time_t * timer);

如果你已經聲明了參數timer,你可以從參數timer返回現在的日歷時間,同時也可以通過返回值返回現在的日歷時間,即從一個時間點(例如:1970年1月1日0時0分0秒)到現在此時的秒數。如果參數為空(NUL),函數將只通過返回值返回現在的日歷時間,比如下面這個例子用來顯示當前的日歷時間:

運行的結果與當時的時間有關,我當時運行的'結果是:

/* Date : 10/24/2007 */

/* Author: Eman Lee */

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

int main(void)

{

time_t lt;

lt =time(NULL);

printf("The Calendar Time now is %d ",lt);

return 0;

}

The Calendar Time now is 1122707619

其中1122707619就是我運行程序時的日歷時間。即從1970-01-01 08:00:00到此時的秒數。

5. 獲得日期和時間

這里說的日期和時間就是我們平時所說的年、月、日、時、分、秒等信息。從第2節我們已經知道這些信息都保存在一個名為tm的結構體中,那麼如何將一個日歷時間保存為一個tm結構的對象呢?

其中可以使用的函數是gmtime()和localtime(),這兩個函數的原型為:

struct tm * gmtime(const time_t *timer);

struct tm * localtime(const time_t * timer);

其中gmtime()函數是將日歷時間轉化為世界標准時間(即格林尼治時間),並返回一個tm結構體來保存這個時間,而localtime()函數是將日歷時間轉化為本地時間。比如現在用gmtime()函數獲得的世界標准時間是2005年7月30日7點18分20秒,那麼我用localtime()函數在中國地區獲得的本地時間會比世界標准時間晚8個小時,即2005年7月30日15點18分20秒。下面是個例子:

//本地時間,世界標准時間

/* Date : 10/24/2007 */

/* Author: Eman Lee */

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

int main(void)

{

struct tm *local;

time_t t;

t=time(NULL);

local=localtime(&t);

printf("Local hour is: %d:%d:%d ",local->tm_hour,local->tm_min,local->tm_sec);

local=gmtime(&t);

printf("UTC hour is: %d:%d:%d ",local->tm_hour,local->tm_min,local->tm_sec);

return 0;

}

運行結果是:

Local hour is: 23:17:47

UTC hour is: 15:17:47

6. 固定的時間格式

我們可以通過asctime()函數和ctime()函數將時間以固定的格式顯示出來,兩者的返回值都是char*型的字元串。返回的時間格式為:

星期幾 月份 日期 時:分:秒 年

例如:Wed Jan 02 02:03:55 1980

其中 是一個換行符,是一個空字元,表示字元串結束。下面是兩個函數的原型:

char * asctime(const struct tm * timeptr);

char * ctime(const time_t *timer);

其中asctime()函數是通過tm結構來生成具有固定格式的保存時間信息的字元串,而ctime()是通過日歷時間來生成時間字元串。這樣的話,asctime()函數只是把tm結構對象中的各個域填到時間字元串的相應位置就行了,而ctime()函數需要先參照本地的時間設置,把日歷時間轉化為本地時間,然後再生成格式化後的字元串。在下面,如果t是一個非空的time_t變數的話,那麼:

printf(ctime(&t));

等價於:

struct tm *ptr;

ptr=localtime(&t);

printf(asctime(ptr));

那麼,下面這個程序的兩條printf語句輸出的結果就是不同的了(除非你將本地時區設為世界標准時間所在的時區):

//本地時間,世界標准時間

/* Date : 10/24/2007 */

/* Author: Eman Lee */

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

int main(void)

{

struct tm *ptr;

time_t lt;

lt =time(NULL);

ptr=gmtime(<);

printf(asctime(ptr));

printf(ctime(<));

return 0;

}

運行結果:

Sat Jul 30 08:43:03 2005

Sat Jul 30 16:43:03 2005

7. 自定義時間格式

我們可以使用strftime()函數將時間格式化為我們想要的格式。它的原型如下:

size_t strftime(

char *strDest,

size_t maxsize,

const char *format,

const struct tm *timeptr

);

我們可以根據format指向字元串中格式命令把timeptr中保存的時間信息放在strDest指向的字元串中,最多向strDest中存放maxsize個字元。該函數返迴向strDest指向的字元串中放置的字元數。

函數strftime()的操作有些類似於sprintf():識別以百分號(%)開始的格式命令集合,格式化輸出結果放在一個字元串中。格式化命令說明串strDest中各種日期和時間信息的確切表示方法。格式串中的其他字元原樣放進串中。格式命令列在下面,它們是區分大小寫的。

%a 星期幾的簡寫

%A 星期幾的全稱

%b 月分的簡寫

%B 月份的全稱

%c 標準的日期的時間串

%C 年份的後兩位數字

%d 十進製表示的每月的第幾天

%D 月/天/年

%e 在兩字元域中,十進製表示的每月的第幾天

%F 年-月-日

%g 年份的後兩位數字,使用基於周的年

%G 年分,使用基於周的年

%h 簡寫的月份名

%H 24小時制的小時

%I 12小時制的小時

%j 十進製表示的每年的第幾天

%m 十進製表示的月份

%M 十時製表示的分鍾數

%n 新行符

%p 本地的AM或PM的等價顯示

%r 12小時的時間

%R 顯示小時和分鍾:hh:mm

%S 十進制的秒數

%t 水平製表符

%T 顯示時分秒:hh:mm:ss

%u 每周的第幾天,星期一為第一天 (值從0到6,星期一為0)

%U 第年的第幾周,把星期日做為第一天(值從0到53)

%V 每年的第幾周,使用基於周的年

%w 十進製表示的星期幾(值從0到6,星期天為0)

%W 每年的第幾周,把星期一做為第一天(值從0到53)

%x 標準的日期串

%X 標準的時間串

%y 不帶世紀的十進制年份(值從0到99)

%Y 帶世紀部分的十進制年份

%z,%Z 時區名稱,如果不能得到時區名稱則返回空字元。

%% 百分號

如果想顯示現在是幾點了,並以12小時制顯示,就象下面這段程序:

//顯示現在是幾點了,並以12小時制顯示

/* Date : 10/24/2007 */

/* Author: Eman Lee */

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

int main(void)

{

struct tm *ptr;

time_t localTime;

char str[80];

localTime=time(NULL);

ptr=localtime(&localTime);

strftime(str,100,"It is now %I %p ",ptr);

printf(str);

return 0;

}

其運行結果為:

It is now 4PM

而下面的程序則顯示當前的完整日期:

//顯示當前的完整日期

/* Date : 10/24/2007 */

/* Author: Eman Lee */

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

void main( void )

{

struct tm *newtime;

char tmpbuf[128];

time_t localTime1;

time( &localTime1 );

newtime=localtime(&localTime1);

strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y. ", newtime);

printf(tmpbuf);

}

運行結果:

Today is Saturday, day 30 of July in the year 2005.

8. 計算持續時間的長度

有時候在實際應用中要計算一個事件持續的時間長度,比如計算打字速度。在第1節計時部分中,我已經用clock函數舉了一個例子。Clock()函數可以精確到毫秒級。同時,我們也可以使用difftime()函數,但它只能精確到秒。該函數的定義如下:

double difftime(time_t time1, time_t time0);

雖然該函數返回的以秒計算的時間間隔是double類型的,但這並不說明該時間具有同double一樣的精確度,這是由它的參數覺得的(time_t是以秒為單位計算的)。比如下面一段程序:

//計算持續時間的長度

/* Date : 10/24/2007 */

/* Author: Eman Lee */

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

int main(void)

{

time_t start,end;

start = time(NULL);

system("pause");

end = time(NULL);

printf("The pause used %f seconds. ",difftime(end,start));//<-

system("pause");

return 0;

}

運行結果為:

請按任意鍵繼續. . .

The pause used 2.000000 seconds.

請按任意鍵繼續. . .

可以想像,暫停的時間並不那麼巧是整整2秒鍾。其實,你將上面程序的帶有「//<-」注釋的一行用下面的一行代碼替換:

printf("The pause used %f seconds. ",end-start);

其運行結果是一樣的。

9. 分解時間轉化為日歷時間

這里說的分解時間就是以年、月、日、時、分、秒等分量保存的時間結構,在C/C++中是tm結構。我們可以使用mktime()函數將用tm結構表示的時間轉化為日歷時間。其函數原型如下:

time_t mktime(struct tm * timeptr);

其返回值就是轉化後的日歷時間。這樣我們就可以先制定一個分解時間,然後對這個時間進行操作了,下面的例子可以計算出1997年7月1日是星期幾:

//計算出1997年7月1日是星期幾

/* Date : 10/24/2007 */

/* Author: Eman Lee */

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

int main(void)

{

struct tm time;

time_t t_of_day;

time.tm_year=1997-1900;

time.tm_mon=6;

time.tm_mday=1;

time.tm_hour=0;

time.tm_min=0;

time.tm_sec=1;

time.tm_isdst=0;

t_of_day=mktime(&time);

printf(ctime(&t_of_day));

return 0;

}

運行結果:

Tue Jul 01 00:00:01 1997

有了mktime()函數,是不是我們可以操作現在之前的任何時間呢?你可以通過這種辦法算出1945年8月15號是星期幾嗎?答案是否定的。因為這個時間在1970年1月1日之前,所以在大多數編譯器中,這樣的程序雖然可以編譯通過,但運行時會異常終止。

註:linux系統時間如果轉換為 time_t 類型,都是從1970-01-01 08:00:00 開始計算

H. 單片機c語言預編譯時間問題

樓上的,你好像說的不對吧,你有沒有學過編譯原理。
宏定義都是在編譯時就處理好了(屬於預處理,直接在編譯時處理好代進去用的),運行時並不佔用大量的實型數據運算。

I. C語言的發展史

發展史:

C語言的祖先是BCPL語言。
1967年,劍橋大學的 Martin Richards 對CPL語言進行了簡化,於是產生了BCPL(Basic Combined Pogramming Language)語言。

1970年,美國貝爾實驗室的 Ken Thompson。以BCPL語言為基礎,設計出很簡單且很接近硬體的B語言(取BCPL的首字母)。並且他用B語言寫了第一個UNIX操作系統。

在1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。

為了使UNIX操作系統推廣,1977年Dennis M.Ritchie發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》。

1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。

1990年,國際標准化組織ISO(International Organization for Standards)接受了89 ANSI C 為I SO C 的標准(ISO9899-1990)。

1994年,ISO修訂了C語言的標准。

1995年,ISO對C90做了一些修訂,即「1995基準增補1(ISO/IEC/9899/AMD1:1995)」。

1999年,ISO有對C語言標准進行修訂,在基本保留原來C語言特徵的基礎上,針對應該的需要,增加了一些功能,尤其是對C++中的一些功能,命名為ISO/IEC9899:1999。

2001年和2004年先後進行了兩次技術修正。
目前流行的C語言編譯系統大多是以ANSI C為基礎進行開發的,但不同版本的C編譯系統所實現的語言功能和語法規則有略有差別。

熱點內容
谷歌瀏覽器開啟ftp 發布:2025-02-08 08:55:08 瀏覽:26
安卓工程師開發是什麼專業 發布:2025-02-08 08:38:15 瀏覽:677
怎麼用電腦和朋友遠程伺服器連接 發布:2025-02-08 08:29:52 瀏覽:232
如何播放咪咕視頻的緩存電影 發布:2025-02-08 08:28:17 瀏覽:568
台式電腦修改密碼在哪裡修改 發布:2025-02-08 08:25:18 瀏覽:297
linux編譯opencv 發布:2025-02-08 08:14:29 瀏覽:712
解除先制的密碼是多少 發布:2025-02-08 08:10:13 瀏覽:861
c語言程序設計豆瓣 發布:2025-02-08 08:08:06 瀏覽:526
學校伺服器如何進入密碼界面 發布:2025-02-08 08:05:45 瀏覽:821
UE4源碼編譯要多久 發布:2025-02-08 07:52:50 瀏覽:233