C語言,為什麼結果出來兩個n不同

2021-07-01 01:38:05 字數 6135 閱讀 3019

1樓:真心的小愛

標準c與經典c的比較

本附錄列出了標準c與經典c之間 (即kernighan和ritchie合著的the c programming language一書第

1版所描述的語言)的大多數顯著差異。標題指明瞭本書的哪章在討論每個標準c的特性。本附錄沒有介

紹c庫,因為它已經變化很多年了。

如果使用者的編譯器沒有宣告是“標準的”,那麼最好的辦法是檢視編譯器手冊來了解此編譯器可以提

供的標準c的特性數量。事實上,所有c語言編譯器至少都可以處理一些較新的特性。

對於標準c和經典c之間的其他(不十分重要的)差異,請參考the c programming language一書第2

版的附錄a和附錄c。

第2章 c語言基本概念

識別符號 在經典c中,只有識別符號的前8個字元是有意義的。

關鍵字 經典c缺少關鍵字const、enum、signed、void和volatile。在經典c中,單詞

entry是關鍵字。

第4章 表示式

一元+ 經典c不提供一元+運算子。

第5章 選擇語句

switch 在經典c中,switch語句中的控制表示式(和情況標號)在提升後必須具有int類

型。而在標準c中,表示式和標號可以是任何一種整數型別,包括unsigned int

型別和long int型別。

第7章 基本型別

無符號型別 經典c只提供一種無符號型別(unsigned int)。

singed 經典c不支援signed型別說明符。

數的字尾 說明整型常量是無符號的情況時,經典c不提供u(或u)字尾,而且說明浮點常量作

為float型而不是double型儲存時,經典c也不提供f(或f)字尾。在經典c中,l

(或l)字尾不能用於浮點常量。

long float 經典c把long float用作是double的同義詞,而這種用法在標準c中是不合法的。

long double 經典c不提供long double型別。

轉義序列 在經典c中不存在轉義序列\a、\v和\。而且經典c不提供十六進位制的轉義序列。

size_t 在經典c中,sizeof運算子返回int型別值。而在標準c中,它則返回size_t型別

值。 通用的算術轉換 經典c要求把float型運算數轉換成double型的,而且,經典c說明較短的無符號整數與

較長的有符號整數結合始終會產生無符號的結果。

第9章 函式

函式定義 在標準c的函式定義中,引數列表中含有引數的型別:

附錄 c

597416 附錄 c 標準 c 與經典 c 的比較

double square(double x)

經典c則要求在單獨列表中說明引數的型別:

double square(x)

double x

函式宣告 標準c的函式宣告 (原型) 指明瞭函式引數的型別 (如果需要, 也可以有引數的名字) :

double square(double x);

double square(double); /* alternate form */

int rand(void); /* no parameters */

經典c的函式宣告忽略了關於形式引數的全部資訊:

double square();

int rand();

函式呼叫 當使用經典c的定義或宣告時,編譯器不檢查帶引數的被呼叫函式是否有正確的引數

數量和型別。此外,實參也不會自動轉換成相應形式引數的型別。相反,執行整數

的提升,並把float型引數轉換成為double型。

void 經典c不支援void型別。

第12章 指標和陣列

指標減法 兩個指標相減, 在經典c中產生int型的值, 而在標準c中則產生ptrdiff_t型的值。

第13章 字串

字串字面量 在經典c中,鄰近的字串字面量是無法連線的。而且,經典c不禁止字串字面量的

修改。字串初始化 在經典c中,長度為n的字元陣列的初始化式限制在n-1個字元之內(為結尾的空字元

預留空間)。而標準c允許初始化式長度為n。

第14章 前處理器

#elif、#error、

#pragma

經典c不提供#elif、#error和#pragma指令。

#、##、defined 經典c不提供#、##和defined運算子。

第16章 結構、聯合和列舉

結構和聯合的

成員與標記

在標準c中,每個結構和聯合都有針對成員的自己的名字空間,且結構和聯合的標記

會被儲存在單獨的名字空間中。而經典c為成員和標記採用單一的名字空間,所以成

員無法具有相同的名字(某些例外),而且成員和標記無法重疊。

完全結構的操作 經典c不允許對結構進行賦值、引數傳遞或函式返回操作。

列舉 經典c不支援列舉。

第17章 指標的高階應用

void * 標準c把void *用作“普通的”指標型別。例如,malloc函式返回void *型別的

值。而經典c則採用char *來達到此目的。

指標混合 經典c允許在賦值和比較中混合不同型別的指標。而在標準c中,可以把void *型別

的指標與其他型別指標混合,但是其他不帶強制型別轉換的混合是不允許的。類似的,

經典c允許在賦值和比較中混合整數和指標,而經典c則要求進行強制型別轉換。

598599 附錄 c 標準 c 與經典 c 的比較 417

指向函式的指標 如果pf是指向函式的指標, 則標準c允許使用(*pf)(...)或pf (...) 來呼叫函式,

而經典c只允許使用(*pf)(...) 來呼叫函式。

第18章 宣告

const和

volatile

經典c不提供const和volatile型別限定符。

陣列、結構和聯

合的初始化

經典c不允許自動初始化陣列和結構,而且不允許初始化聯合(不管儲存期限)。

第25章 國際化特性

寬字元 經典c不支援寬字元常量和寬字串字面量。

關鍵字 經典c不支援三字元序列。

第26章 其他庫函式

可變實際引數 經典c不提供可移植的方法來寫帶可變數量實際引數的函式,而且缺少…(省略號)符號。

c語言,為什麼有兩個\n,求解

2樓:溫如星河

“\n”是換行符,一個換行符相當於一個回車,即另起一行的意思。

兩個“\n”說明有兩個換行符,相當於兩個回車,表示游標跳到了下面第二行。

3樓:奧爾

換兩行唄,你想換幾行就換幾行

4樓:**

c語言細節、演算法講解

5樓:科技大記事

\n是回車的意思,兩個\n就兩個回車

6樓:資料**

就是輸出兩個換行 沒有實際作用!

7樓:匿名使用者

兩個\n就是連著換兩行,沒什麼特殊的意思。

在輸出b 66之後再換兩行

c語言,,,為什麼結果是這個,不是相同為0,不同為1嗎

8樓:匿名使用者

①&、|、^、>>、《都是c語言中的位運算子,對數字進行bit(位)層面的運算。

&:只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。

|:只要對應的兩個二進位有一個為1時,結果位就為1。

^:當兩對應的二進位不相同時,結果位為1。

>>:把“<< ”左邊的運算數的各二進位全部左移若干位,由“<<”右邊的數指定移動的位數,高位丟棄,低位補0。例如:

00000011(十進位制3)<<4 表示把3的各二進位向左移動4位得到00110000(十進位制48)。

<<:把“>> ”左邊的運算數的各二進位全部右移若干位,由“>>”右邊的數指定移動的位數。例如:

000001111(十進位制15)>>2表示把15的各二進位向右移動2位得到00000011(十進位制3)。

以下是提問中的程式執行結果與過程對照:

②以%f輸出的x為單精度浮點數,即小數,%.3f意為小數點後保留三位。

"\n"為換行符。

c語言裡%d,為什麼有的是%d/n,區別是什麼?

9樓:匿名使用者

%d %f是列印變數的型別。

%d是整數型別。用來輸出十進位制整數,按整型資料的實際長度輸出。

%f是浮點型別(就是含小數點的,預設為6位)

\n是表示回車,即,轉到下一行。

它的意義多表現在有多個printf的時候,為了不混淆,一般每個printf的內容佔一行。

c語言中對於不同型別的資料用不同的格式字元,%d %f是printf函式格式字元。

拓展資料:

在c語言中:printf()函式是格式化輸出函式, 一般用於向標準輸出裝置按規定格式輸出資訊。

printf()函式的呼叫格式為: printf("《格式化字串》", 《參量表》)。

格式輸出,它是c語言中產生格式化輸出的函式(在 stdio.h 中定義)。用於向終端(顯示器、控制檯等)輸出字元。格式控制由要輸出的文字和資料格式說明組成。

要輸出的文字除了可以使用字母、數字、空格和一些數字符號以外,還可以使用一些轉義字元表示特殊的含義。

c語言中printf函式的介紹以及使用

10樓:654鄉

%d為整型輸出,%d比%d/n多了一個“/n”換行符,這樣前者在下一次的輸出會緊接在本次輸出內容後,而後者下一次輸出會在下一行首開始。

如:int a,=10;b=5;

printf("%d\n,%d",a,b);

輸出:10

5c語言中%s,%x,%f,%.100f,%的意思:

格式說明由“%”和格式字元組成,如%d%f等。它的作用是將輸出的資料轉換為指定的格式輸出。格式說明總是由“%”字元開始的。

格式字元有d,o,x,u,c,s,f,e,g等。

%o以八進位制數形式輸出整數,

%x以十六進位制數形式輸出整數,或輸出字串的地址。

%u以十進位制數輸出unsigned型資料(無符號數)。注意:%d與%u有無符號的數值範圍,也就是極限的值,不然數值列印出來會有誤。

%c用來輸出一個字元,

%s用來輸出一個字串,

%f用來輸出實數,以小數形式輸出,預設情況下保留小數點6位。

%.100f用來輸出實數,保留小數點100位。

%e以指數形式輸出實數,

%g根據大小自動選f格式或e格式,且不輸出無意義的零。

11樓:匿名使用者

區別在於兩者定義的輸出不同,%d控制的輸出不換行,而%d/n控制的輸出要換行。/n是轉義字元,控制換行。

例如:int a,=2;b=5;

printf("%d,%d",a,b);

輸出結果為:

2  5

而int a,=2;b=5;

printf("%d,%d",a,b);

輸出結果為:25

擴充套件資料:

/n是轉義字元中的一種,而轉義有2種情況:

(1)將普通字元轉為特殊用途,一般是程式語言中,用於表示不能直接顯示的字元,比如後退鍵,回車鍵,等。

(2)用來將特殊意義的字元轉換回它原來的意義。

轉義字串(escape string),即字元實體(character entity)分成三部分:第一部分是一個&符號,英文叫ampersand;第二部分是實體(entity)名字或者是#加上實體(entity)編號;第三部分是一個分號。

比如,要顯示小於號(<),就可以寫 < 或者 < 。

用實體(entity)名字的好處是比較好理解,一看lt,大概就猜出是less than的意思,但是其劣勢在於並不是所有的瀏覽器都支援最新的entity名字。而實體(entity)編號,各種瀏覽器都能處理。

備註:同一個符號,可以用“實體名稱”和“實體編號”兩種方式引用,“實體名稱”的優勢在於便於記憶,但不能保證所有的瀏覽器都能順利識別它,而“實體編號”則沒有這種擔憂,但它實在不方便記憶。

常用轉義字元及含義如下圖:

C語言,這兩個程式框圖寫成程式,C語言,這兩個程式框圖寫成程式

include int main include int main 哪位高手能幫忙把這個c語言程式的程式框圖畫出來,萬分感謝 10 最討厭這種程式設計風格,讓人看不懂,還不想看 將c語言畫成程式框圖 我的程式是用c語言編的乙個畫圖軟體 首先要先了解流程圖的畫法,掌握基本控制結構 用某種方法實現圓的生...

c語言向量的運算,用C語言編寫乙個計算兩個向量叉積的程式

根據題意可得如下代專碼 屬 include int main for i 0 i n i for i 0 i n i printf d n ans return 0 c語言如何實現兩向量叉乘 根據叉乘的計算方法可知 因此可直接通過計算三階行列式的方法來計算兩向量的叉乘 include void cp...

C語言,陣列題目,第四題,為什麼C,D兩個選項是不合法的

c語言指標可以代替陣列使用,會導致很多混淆概念。在乙個字元陣列a裡,變數a實際上是乙個指標,它指向陣列的初始位址,即a 0 資料所在的位址,而整個陣列的資料儲存是連續的,它們被依次存放在從a 0 位址起始的相鄰的儲存單元內。如char a 一句,宣告這一句後,編譯器會開闢一片連續的空閒位址,並從第乙...