當前位置:首頁 » 編程語言 » 標准c語言

標准c語言

發布時間: 2022-02-04 05:10:17

A. c語言中,標准main函數的書寫規范是什麼

在最新的 C99 標准中,只有以下兩種定義方式是正確的:
int main( void ) /* 無參數形式 */
{
...
return 0;
}
int main( int argc, char *argv[] ) /* 帶參數形式 */
{
...
return 0;
}
int指明了main()函數的返回類型,函數名後面的圓括弧一般包含傳遞給函數的信息。void表示沒有給函數傳遞參數。關於帶參數的形式,我們等會討論。
瀏覽老版本的C代碼,將會發現程序常常以。
main()
這種形式開始。C90標准允許這種形式,但是C99標准不允許。因此即使你當前的編譯器允許,也不要這么寫。
你還可能看到過另一種形式。
void main()
有些編譯器允許這種形式,但是還沒有任何標准考慮接受它。C++ 之父 Bjarne Stroustrup 在他的主頁上的 FAQ 中明確地表示:void main( ) 的定義從來就不存在於 C++ 或者 C 。所以,編譯器不必接受這種形式,並且很多編譯器也不允許這么寫。

B. 標准C語言編程

int sort(int a[],int n)// a[]為你要排序的數組,n為數組的長度
{
int i,j,k;

for (i=0;i<n;++i)
{
k=i;
for (j=i+1;j<n;++j)
if (a[j]<a[k]) k=j;
if (k!=i)
{
a[i]+=a[k];
a[k]=a[i]-a[k];
a[i]=a[i]-a[k];
}
}

getchar();
return 0;
}

int sum(int x,int y) //x、y為你要求和的上限和下線
{
int i,sum;

for(i=(x%2==0)? x : x+1; i<y;i=i+2)
{
sum=sum+i;
}
return sum;
}

C. ANSI C語言標准

由ANSI標準定義的C語言關鍵字共32個 :
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
根據關鍵字的作用,可以將關鍵字分為數據類型關鍵字和流程式控制制關鍵字兩大類。
1 數據類型關鍵字
A基本數據類型(5個)
void :聲明函數無返回值或無參數,聲明無類型指針,顯式丟棄運算結果
char :字元型類型數據,屬於整型數據的一種
int :整型數據,通常為編譯器指定的機器字長
float :單精度浮點型數據,屬於浮點數據的一種
double :雙精度浮點型數據,屬於浮點數據的一種
B 類型修飾關鍵字(4個)
short :修飾int,短整型數據,可省略被修飾的int。
long :修飾int,長整形數據,可省略被修飾的int。
signed :修飾整型數據,有符號數據類型
unsigned :修飾整型數據,無符號數據類型
C 復雜類型關鍵字(5個)
struct :結構體聲明
union :共用體聲明
enum :枚舉聲明
typedef :聲明類型別名
sizeof :得到特定類型或特定類型變數的大小
D 存儲級別關鍵字(6個)
auto :指定為自動變數,由編譯器自動分配及釋放。通常在棧上分配
static :指定為靜態變數,分配在靜態變數區,修飾函數時,指定函數作用域為文件內部
register :指定為寄存器變數,建議編譯器將變數存儲到寄存器中使用,也可以修飾函數形參,建議編譯器通過寄存器而不是堆棧傳遞參數
extern :指定對應變數為外部變數,即在另外的目標文件中定義,可以認為是約定由另外文件聲明的韻蟮囊桓觥耙�謾?
const :與volatile合稱「cv特性」,指定變數不可被當前線程/進程改變(但有可能被系統或其他線程/進程改變)
volatile :與const合稱「cv特性」,指定變數的值有可能會被系統或其他進程/線程改變,強制編譯器每次從內存中取得該變數的值
2 流程式控制制關鍵字
A 跳轉結構(4個)
return :用在函數體中,返回特定值(或者是void值,即不返回值)
continue :結束當前循環,開始下一輪循環
break :跳出當前循環或switch結構
goto :無條件跳轉語句
B 分支結構(5個)
if :條件語句
else :條件語句否定分支(與if連用)
switch :開關語句(多重分支語句)
case :開關語句中的分支標記
default :開關語句中的「其他」分治,可選。
C 循環結構(3個)
for :for循環結構,for(1;2;3)4;的執行順序為1->2->4->3->2...循環,其中2為循環條件
do :do循環結構,do 1 while(2); 的執行順序是 1->2->1...循環,2為循環條件
while :while循環結構,while(1) 2; 的執行順序是1->2->1...循環,1為循環條件
以上循環語句,當循環條件表達式為真則繼續循環,為假則跳出循環。
參考資料: http://www.cnblogs.com/atticstudio/archive/2010/02/06/1665153.html

D. 現在的c語言標準是c99嗎

C99是標准ISO/IEC 9899:1999的簡稱。
2011年12月8號,ISO 發布了新的 C 語言的新標准——C11,之前被稱為C1X,官方名稱 ISO/IEC 9899:2011。
C11是目前最新的C語言標准。

E. 標准C語言中π怎麼打

標準的C語言中沒有π這個符號及常量,一般在開發過程中是通過開發人員自己定義這個常量的,最常見的方式是使用宏定義:

#definePI3.141592

也可以直接普通變數定義,如:

doublepi=3.141592;

F. C語言在世界上有幾個標准

C語言的標准很多,這個問題沒有標准答案,但是通常所說的C語言標准一般指如下幾個:

  1. K&R C:這是Brian Kernighan 和 Dennis Ritchie 1987年合著的《C語言程序設計》中的C語言參考,也稱為"經典C"。

  2. ANSI C:這是1989年美國國家標准協會ANSI公布的標准

  3. ISO C:1990年國際標准化組織ISO採用ANSI C作為ISO標准。這個版本也稱為 C89或C90。因此ANSI C、ISO C、ANSI/ISO C、C89、C90實際上是一套東西。

  4. C99:ISO 1994年開始修訂新的標准,並最終發布了C99.

  5. C11:ISO 2007年開始修訂,並於2011年發布了新的標准,稱之為C11.

G. C語言標准包括哪些

有很多的標准,但基本上對應用不會有太大的干擾。比較重要的標準是C89/C90和C99。而且沒必要去深入研究標准,相比之下,研究編譯器是如何實現標准以及作了哪些擴充,似乎更有意義。

H. 各種C語言標准與區別

GNU C 允許零長度數組
GNU C 允許定義長度為0的數組,可能很多人會問長度為0的數組有什麼用啊。其實我們可以定義一個長度為0的數組,那麼這個數組是不佔用內存空間的,但是 我們可以通過這個數組來訪問數組後面的數據,比如一個結構體:
struct data_pra
{
char name;
char num[0];
char year;
charr month;
...
};
struct data_pra data;
就可以通過調用data.num[0]獲得year數據,data.num[1]來獲得month的數據。如果他們的類型相同,並且取值范圍相同,我們要對他們進行范圍檢查,這是我們就可以通過for循環來實現,而不需要獲取每個數據的值,再進行取值范圍判斷了。
GNU支持case 取值范圍用法
GNU C 支持case x…y 語法,區間[x,y]的數都會滿足這個case的條件,我們在不考慮if判斷的情況下,如整數a的取值范圍為0-5,當0<3時執行fun1函數,大於等於3時執行fun2();則GNU C可以通過以下代碼實現:
switch(a)
{
case 0..: 2:fun1();
break;
case 3…5: fun2();
break;
}
而不是
switch(a)
{
case 0
case 1;
case 2:
fun1();
break;
case 3:
case 4;
case 5:
fun2();
break;
}
如果條件越多,這種實現方案就越簡單方便。也便於其他人員閱讀代碼。
語句表達式
GNU C把包含在括弧里的復合語句看做是一個表達式,稱為語句表達式,它可以出現在任何允許表達式的地方。可以在語句表達式中使用原本只能在復合語句中使用的循環變數、局部變數等,例如:
#define min_t(type,x,y) ({type __x=(x); type __y=(y);__x<__y?__x:__y})
int ia,ib,mini;
mini=min_t(int,ia,ib);
這樣,因為重新定義了__x和__y這兩個局部變數,所以上述方法定義的宏將不會有副作用。在標准C中,對應的宏通常會有副作用
typeof關鍵字
typeof(x) 可以獲得x的類型,因此,可以藉助typeof重新定義上一條提到的min_t這個宏
#define min(x,y) /
({ /
const typeof(x) _x=(x);/
const typeof(y) _y=(y);/
(void) (&_x==&_y);/
_x<_y ? _x: _y ; })
不需要像上一條時那樣傳一個type進去,因為通過typeof(x)可以得到type。
代碼 (void) (&_x==&_y);的作用是檢查_x和_y的類型是否一致。
可變參數的宏
標准C只支持可變參數的函數,意味著函數的參數可以是不固定的
例如printf()函數的原型是
int printf(const char *format [,argument]…)
而在GNU C中,宏也可以接受可變數目的參數,例如
#define pr_debug(fmt,arg…) printk(fmt,##arg)
這里arg表示其餘的參數可以是零個或多個,這些參數以及參數之間的逗號構成arg的值,
在宏擴展時替換arg ,例如
pr_debug(「%s:%d」,filename,line);
被擴展為
printk(「%s:%d」,filename,line);
使用##的原因是為了處理arg不代表任何參數的情況,這時候,前面的逗號就變得多餘了。
使用##之後,GNU C預處理器會丟棄前面的逗號
pr_debug(「success!/n」) 會被正確擴展為 printk(「success!/n」)
而不是 printk(「success!/n」,);

I. C語言中的標准函數有哪些

C語言編譯系統提供了眾多的預定義庫函數和宏。用戶在編寫程序時,可以直接調用這些庫函數和宏。這里選擇了初學者常用的一些庫函數,簡單介紹了各函數的用法和所在的頭文件。

1.測試函數

Isalnum
原型:int isalnum(int c)
功能:測試參數c是否為字母或數字:是則返回非零;否則返回零
頭文件:ctype.h
Isapha
原型:int isapha(int c)
功能:測試參數c是否為字母:是則返回非零;否則返回零
頭文件:ctype.h
Isascii
原型:int isascii(int c)
功能:測試參數c是否為ASCII碼(0x00~0x7F):是則返回非零;否則返回零
頭文件:ctype.h
Iscntrl
原型:int iscntrl(int c)
功能:測試參數c是否為控制字元(0x00~0x1F、0x7F):是則返回非零;否則返回零
頭文件:ctype.h
Isdigit
原型:int isdigit(int c)
功能:測試參數c是否為數字:是則返回非零;否則返回零。
頭文件:ctype.h
Isgraph
原型:int isgraph(int c)
功能:測試參數c是否為可列印字元(0x21~0x7E):是則返回非零;否則返回零
頭文件:ctype.h
Islower
原型:int islower(int c)
功能:測試參數c是否為小寫字母:是則返回非零;否則返回零
頭文件:ctype.h
Isprint
原型:int isprint(int c)
功能:測試參數c是否為可列印字元(含空格符0x20~0x7E):是則返回非零;否則返回零
頭文件:ctype.h
Ispunct
原型:int ispunct(int c)
功能:測試參數c是否為標點符號:是則返回非零;否則返回零
頭文件:ctype.h
Isupper
原型:int isupper(inr c)
功能:測試參數c是否為大寫字母:是則返回非零;否則返回零
Isxdigit
原型:int isxdigit(int c)
功能:測試參數c是否為十六進制數:是則返回非零;否則返回零

2.數學函數

abs
原型:int abs(int i)
功能:返回整數型參數i的絕對值
頭文件:stdlib.h,math.h
acos
原型:double acos(double x)
功能:返回雙精度參數x的反餘弦三角函數值
頭文件:math.h
asin
原型:double asin(double x)
功能:返回雙精度參數x的反正弦三角函數值
頭文件:math.h
atan
原型:double atan(double x)
功能:返回雙精度參數的反正切三角函數值
頭文件:math.h
atan2
原型:double atan2(double y,double x)
功能:返回雙精度參數y和x由式y/x所計算的反正切三角函數值
頭文件:math.h
cabs
原型:double cabs(struct complex znum)
功能:返回一個雙精度數,為計算出復數znum的絕對值。Complex的結構模式在math.h中給出定義,其定義如下:
struct complex {
double a,y
};
頭文件:stdlib.h,math.h
ceil
原型:double ceil(double x)
功能:返回不小於參數x的最小整數
頭文件:math.h
_clear87
原型:unsigned int _clear87(void)
功能:清除浮點運算器狀態字
頭文件:float.h
_control87
原型:unsigned int _control87(unsigned int newvals,unsigned int mask)
功能:取得或改變浮點運算器控制字
頭文件:float.h
cos
原型:double cos(double x)
功能:返回參數x的餘弦函數值
頭文件:math.h
cosh
原型:double cosh(double x)
功能:返回參數的雙曲線餘弦函數值
頭文件:math.h
ecvt
原型:char*ecvt(double value,int ndigit,int*decpt,int*sign)
功能:把雙精度數value轉換為ndigit位數字的以空格字元結束的字元串,decpt指向小數點位置,sign為符號標志。函數返回值為指向轉換後的字元串的指針
頭文件:stdlib.h
exp
原型:double exp(double x)
功能:返回參數x的指數函數值
頭文件:math.h
fabs
原型:double fabs(double x)
功能:返回參數x的絕對值
頭文件:math.h
floor
原型:double floor(double x)
功能:返回不大於參數x的最大整數
頭文件:math.h
fmod
原型:double fmod(double x,double y)
功能:計算x/y的余數。返回值為所求的余數值
頭文件:math.h
_fprest
原型:void _fprest(void)
功能:重新初始化浮點型數數學包
頭文件:float.h
frexp
原型:double frexp(double value,int*eptr)
功能:把雙精度函數value分解成尾數和指數。函數返回尾數值,指數值存放在eptr所指的單元中
頭文件:math.h
hypot
原型:double frexp(double x,double y)
功能:返回由參數x和y所計算的直角三角形的斜邊長
頭文件:math.h
labs
原型:long labs(long n)
功能:返回長整數型參數n的絕對值
頭文件:stdlib.h
ldexp
原型:double ldexp(double value,int exp)
功能:返回value*2exp的值
頭文件:math.h
log
原型:double log(double x)
功能:返回參數x的自然對數(ln x)的值
頭文件:math.h
log10
原型:double log10(double x)
功能:返回參數x以10為底的自然對數(lg x)的值
頭文件:math.h
modf
原型:double modf(double value,double*iptr)
功能:把雙精度數value分為整數部分和小數部分。整數部分保存在iptr中,小數部分作為函數的返回值
頭文件:math.h
poly
原型 :double poly(double x,int n,double c[ ])
功能:根據參數產生x的一個n次多項式,其系數為 c[0],c[1],…c[n]。函數返回值為給定x的多項式的值
頭文件:math.h
pow
原型:double pow(double x,double y)
功能:返回計算xy的值
頭文件:math.h
pow10
原型:double pow10(int p)
功能:返回計算10p的值
頭文件:math.h
rand
原型:int rand(void)
功能:隨機函數,返回一個范圍在0~215-1的隨機整數
頭文件:stdlib.h
sin
原型:double sin(double x)
功能:返回參數x的正弦函數值
頭文件:math.h
sinh
原型double sinh(double x)
功能:返回參數x的雙曲正弦函數值
頭文件:math.h
sqrt
原型:double sqrt
功能:返回參數x的平方根值
頭文件:math.h
srand
原型:void srand(unsigned seed)
功能:初始化隨機函數發生器
頭文件:stdlib.h
_status87
原型:unsigned int_status87()
功能:取浮點狀態
頭文件:float.h
tan
原型:dounle tan(double x)
功能:返回參數x的正切函數值
頭文件:math.h
tanh
原型:double tan(double x)
功能:返回參數x的雙曲正切函數值
頭文件:math.h

熱點內容
臉書的賬號密碼在哪裡 發布:2025-01-09 16:59:16 瀏覽:190
台灣伺服器怎麼選雲空間 發布:2025-01-09 16:50:06 瀏覽:439
防走失牽引繩密碼如何找回 發布:2025-01-09 16:39:14 瀏覽:705
壓縮機的構造 發布:2025-01-09 16:31:13 瀏覽:150
安卓iis伺服器搭建 發布:2025-01-09 16:31:11 瀏覽:856
鬥地主編程 發布:2025-01-09 16:31:11 瀏覽:595
我的世界花雨亭伺服器怎麼玩 發布:2025-01-09 16:31:10 瀏覽:320
在vmware上安裝linux 發布:2025-01-09 16:30:36 瀏覽:113
文件夾中隱藏文件怎麼顯示 發布:2025-01-09 16:23:57 瀏覽:774
w7共享文件夾如何加密碼 發布:2025-01-09 16:22:23 瀏覽:514