㈠ c語言中char是什麼類型
char是容納單字元的一種基本數據類型,不能存儲漢字,(一個漢字佔2位元組)
存儲字元串用string,其實String就是一個char的數組,不過它當中的元素多一個『'在數組的最後,表示結束
例如字元串abcd
char a[]={'a','b','c','d',''};
是等價的。而且一個變數只能存一個字元;如果要存多個則用string(字元串)類型。
(1)c語言的類型說明符有哪些擴展閱讀:
char是C/C++整型數據中比較古怪的一個,其它的如int/long/short等不指定signed/unsigned時都默認是signed,但char在標准中是unsigned,編譯器可以實現為帶符號的,也可以實現為不帶符號的,有些編譯器如pSOS的編譯器,還可以通過編譯開關來指定它是有符號數還是無符號數。
在MYSQL中,欄位類型char是指:使用指定長度的固定長度表示的字元串;比如char(8),則資料庫會使用固定的1個位元組(八位)來存儲數據,不足8位的字元串在其後補空字元。
㈡ C語言中類型標識符有哪些
C語言中的標識符
1) 標識符由字母、數字、下劃線「_」組成,並且首字母不能是數字.
2) 不能把C語言關鍵字作為標識符.
3) 標識符長度限制8字元.
(註:8字元長度限制是C89標准,C99標准已經擴充長度,其實大部分工業標准都更長)。
4) 標識符對大小寫敏感.
5)標識符命名應做到「見名知意」
下面的標識符名是合法的:
year,Day,ATOK,x1,_ CWS,_change_to
而下面的標識符名是不合法的:
#123,.COM,$100,1996Y,1_2_3,Win3.2
如果你問的是關鍵字的話,參考下面的內容:
auto :聲明自動變數
short :聲明短整型變數或函數
int: 聲明整型變數或函數 long :聲明長整型變數或函數
float:聲明浮點型變數或函數
double :聲明雙精度變數或函數
char :聲明字元型變數或函數
struct:聲明結構體變數或函數
union:聲明共用數據類型
enum :聲明枚舉類型
typedef:用以給數據類型取別名
const :聲明只讀變數
unsigned:聲明無符號類型變數或函數
signed:聲明有符號類型變數或函數
extern:聲明變數是在其他文件正聲明
register:聲明寄存器變數
static :聲明靜態變數
volatile:說明變數在程序執行中可被隱含地改變
void :聲明函數無返回值或無參數,聲明無類型指針
if:條件語句
else :條件語句否定分支(與 if 連用)
switch :用於開關語句
case:開關語句分支
for:一種循環語句
do :循環語句的循環體
while :循環語句的循環條件
goto:無條件跳轉語句
continue:結束當前循環,開始下一輪循環
break:跳出當前循環
default:開關語句中的「其他」分支
sizeof:計算數據類型長度
return :子程序返回語句(可以帶參數,也可不帶參數)循環條件
㈢ C語言中的格式說明符由什麼組成
c語言中的格式說明符,以%開頭,後面接上字母,如%d表示整數,%f表示浮點數,%s表示字元串,%c表示字元等等!
擴展:格式說明符詳細說明
① d格式:用來輸出十進制整數。有以下幾種用法:
%d:按整型數據十進制的實際長度輸出。
%md:m為指定的輸出欄位的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。
%ld:輸出長整型數據。
② o格式:以無符號八進制形式輸出整數。
%d:按整型數據八進制的實際長度輸出。
%lo:對長整型可以用格式輸出
%mo:指定欄位寬度用格式輸出
③ x格式:以無符號十六進制形式輸出整數。
%x:按整型數據十六進制的實際長度輸出。
%lx:對長整型可以用格式輸出
%mx:指定欄位寬度用格式輸出
④ u格式:以無符號十進制形式輸出整數。
%u:按無符號整型數據十進制的實際長度輸出。
%lu:對長整型可以用格式輸出
%mu:指定欄位寬度用格式輸出
⑤ c格式:輸出一個字元。
⑥ s格式:用來輸出一個串。有幾中用法
%s:例如:printf("%s", "CHINA")輸出"CHINA"字元串(不包括雙引號)。
%ms:輸出的字元串佔m列,如字元串長度大於m,將字元串全部輸出。若串長小於m,則左補空格。
%-ms:如果串長小於m,則在m列范圍內,字元串向左靠,右補空格。
%m.ns:輸出佔m列,但只取字元串中左端n個字元。這n個字元輸出在m列的右側,左補空格。
%-m.ns:其中m、n含義同上,n個字元輸出在m列范圍的左側,右補空格。如果n>m,則自動取n值,即保證n個字元正常輸出。
⑦ f格式:用來輸出實數(包括單、雙精度),以小數形式輸出。有以下幾種用法:
%f:不指定寬度,整數部分全部輸出並輸出6位小數。
%m.nf:輸出共佔m列,其中有n位小數,如數值寬度小於m左端補空格。
%-m.nf:輸出共佔n列,其中有n位小數,如數值寬度小於m右端補空格。
⑧ e格式:以指數形式輸出實數。可用以下形式:
%e:數字部分(又稱尾數)輸出6位小數,指數部分佔5位或4位。
%m.ne和%-m.ne:m、n和」-」字元含義與前相同。
此處n指數據的數字部分的小數位數,m表示整個輸出數據所佔的寬度。
⑨ p格式:輸出指針地址
㈣ c語言中float. int. 等符號用處。還有\n %表示什麼意思
float、int、 char、 double、 long叫做類型說明符,用來定義變數的,並說明定義變數的類型
例:float a; /* a為實型,允許有小數點出現。*/
int a; /* a為整型,即為整數*/
\n表示輸出一個回車符號
例:float a=0.1;
int b=1;
printf("%f\n",a);
printf("%d",b);
運行結果為:0.1
1
%通常與%f,%d,%c,%s搭配使用,%與後面的字母統稱為「格式轉換說明符」
%d表示以整數形式輸出
%f表示以實型輸出
%c表示以字元的形式輸出
%s表示以字元串的形式輸出
㈤ 在C語言中各種數據類型各佔多少位
(一)32位平台:
分為有符號型與無符號型。
有符號型:
short 在內存中占兩個位元組,范圍為-2^15~(2^15-1)
int 在內存中佔四個位元組,范圍為-2^31~(2^31-1)
long在內存中佔四個位元組,范圍為-2^31~2^31-1
無符號型:最高位不表示符號位
unsigned short 在內存中占兩個位元組,范圍為0~2^16-1
unsigned int 在內存中佔四個位元組,范圍為0~2^32-1
unsigned long在內存中佔四個位元組,范圍為0~2^32-1
實型變數:
分單精度 float 和雙精度 double 兩種形式:
float:佔四個位元組,提供7~8位有效數字。
double: 佔八個位元組,提供15~16位有效數字。
(二)16位平台:
1)整型(基本型):類型說明符為int,在內存中佔2個位元組。
2)短整型:類型說明符為short int或short。所佔位元組和取值范圍均與整型(基本型)相同。
3)長整型:類型說明符為long int或long,在內存中佔4個位元組。
無符號型:類型說明符為unsigned。
無符號型又可與上述三種類型匹配而構成:
各種無符號類型量所佔的內存空間位元組數與相應的有符號類型量相同。但由於省去了符號位,故不能表示負數。
實型變數:
分為單精度(float型)、雙精度(double型)和長雙精度(long double型)三類。
單精度型佔4個位元組(32位)內存空間,其數值范圍為3.4E-38~3.4E+38,只能提供七位有效數字。
雙精度型佔8 個位元組(64位)內存空間,其數值范圍為1.7E-308~1.7E+308,可提供16位有效數字。
長雙精度型16 個位元組(128位)內存空間,可提供18-19位有效數字。
㈥ C語言中的存儲類說明符有哪些各自的含義如何
inline int foo(int a, int b) { return a + b; }int main(int argc, char *argv[]){return(1,2);
*ANSI C, ISO/IEC C89/C90:標准中沒有inline關鍵字.
*GNU C89/C90:
1、static inline:函數名標識符的作用域為當前編譯單元(translation unit),允許其他編譯單元中有重名定義. 這里的inline建議編譯器,函數在被調用時可以直接展開函數體,但是否展開取決於編譯器.(譬如,如果優化級別為-O0,則必須按函數地址調用,此時編譯器會忽略inline請求,將函數編譯為普通函數;或者,出現了遞歸調用,編譯器也無法內聯這個函數)
2、inline:在當前編譯單元內,和static inline語義相同,都是建議編譯器在當前編譯單元內展開函數體(是否展開取決於編譯器). 但同時編譯器會對該函數生成一份普通函數的代碼,在其他編譯單元內可以調用,與普通的extern函數調用無異.
3、extern inline:相當詭異. 這樣的函數定義只為內聯而提供. 如果強行用普通函數調用方式調用該函數(譬如,優化級別為-O0,或者按函數指針調用),則鏈接器會認為存在另一個同名的普通函數. 如果沒有這個同名普通函數的定義,則鏈接器會報告找不到符號.
*ISO/IEC C99/C11:
1、static inline:和GNU C89/C90中的語義完全相同.
2、inline:很類似GNU C89/C90中的extern inline. 標准文檔中的解釋相當晦澀:允許(但不要求)編譯器在當前編譯單元內展開函數體(原文的描述是「相比正常的函數調用機制,讓內聯函數調用盡可能快」,而文檔下面的腳注中提到,可能的選擇是「內聯替換」,見ISO/IEC 9899:1999或ISO/IEC 9899:2011),是否內聯由編譯器設計者自行決定,同時也允許外部存在同名的普通函數定義. 經測試最新版本的Clang和GCC在標准-std=c99和-std=c11下會在可以內聯的情況下(例如優化級別為-O2)採用內聯版本.
3、但標准文檔中同時也規定了,若在函數聲明中加入extern,則相應的內聯函數定義成為所謂的外部定義,行為和GNU C89/C90的inline相同:在當前編譯單元中建議編譯器展開函數體,同時生成一份普通函數的代碼,在其他編譯單元中也可調用.
4、extern inline:標准文檔中未見extern inline的定義.
*GNU C99/C11:採用與ISO/IEC C99/C11相同的語義.
最新版本的Clang和GCC默認均採用GNU C11標准,因此會出現不優化代碼時找不到內聯函數符號的錯誤.
㈦ c語言基本符號
運算符的種類C語言的運算符可分為以下幾類:
1.算術運算符
用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(–)共七種。
2.關系運算符
用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。
3.邏輯運算符
用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
4.位操作運算符
參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
5.賦值運算符
用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6.條件運算符
這是一個三目運算符,用於條件求值(?:)。
7.逗號運算符
用於把若干表達式組合成一個表達式(,)。
8.指針運算符
用於取內容(*)和取地址(&)二種運算。
9.求位元組數運算符
用於計算數據類型所佔的位元組數(sizeof)。
10.特殊運算符
有括弧(),下標[],成員(→,.)等幾種。
1.C的數據類型
基本類型,構造類型,指針類型,空類型
2.基本類型的分類及特點
類型說明符 位元組 數值范圍
字元型char 1 C字元集
基本整型int 2 -32768~32767
短整型short int 2 -32768~32767
長整型 long int 4-214783648~214783647
無符號型 unsigned 20~65535
無符號長整型 unsigned long 4 0~4294967295
單精度實型 float 43/4E-38~3/4E+38
雙精度實型 double81/7E-308~1/7E+308
3.常量後綴
L或l 長整型
U或u 無符號數
F或f 浮點數
4.常量類型
整數,長整數,無符號數,浮點數,字元,字元串,符號常數,轉義字元。
5.數據類型轉換
·自動轉換
在不同類型數據的混合運算中,由系統自動實現轉換, 由少位元組類型向多位元組類型轉換。 不同類型的量相互賦值時也由系統自動進行轉換,把賦值號右邊的類型轉換為左邊的類型。
·強制轉換
由強制轉換運算符完成轉換。
6.運算符優先順序和結合性
一般而言,單目運算符優先順序較高,賦值運算符優先順序低。 算術運算符優先順序較高,關系和邏輯運算符優先順序較低。 多數運算符具有左結合性,單目運算符、三目運算符、 賦值
7.表達式
表達式是由運算符連接常量、變數、函數所組成的式子。 每個表達式都有一個值和類型。 表達式求值按運算符的優先順序和結合性所規定的順序進行。
表示輸出類型的格式字元 格式字元意義
d 以十進制形式輸出帶符號整數(正數不輸出符號)
o 以八進制形式輸出無符號整數(不輸出前綴O)
x 以十六進制形式輸出無符號整數(不輸出前綴OX)
u 以十進制形式輸出無符號整數
f 以小數形式輸出單、雙精度實數
e 以指數形式輸出單、雙精度實數
g 以%f%e中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字元
s 輸出字元串
標志字元為-、+、#、空格四種,其意義下表所示:
標志格式字元 標 志 意 義
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)空格輸出值為正時冠以空格,為負時冠以負號
# 對c,s,d,u類無影響;對o類, 在輸出時加前
綴o 對x類,在輸出時加前綴0x;對e,g,f 類當結果有小數時才給出小數點
格式字元串
格式字元串的一般形式為: %[*][輸入數據寬度][長度]類型 其中有方括弧[]的項為任選項。各項的意義如下:
1.類型
表示輸入數據的類型,其格式符和意義下表所示。
格式 字元意義
d 輸入十進制整數
o 輸入八進制整數
x 輸入十六進制整數
u 輸入無符號十進制整數
f或e 輸入實型數(用小數形式或指數形式)
c 輸入單個字元
s 輸入字元串
轉義字元
轉義字元是一種特殊的字元常量。轉義字元以反斜線”/”開頭,後跟一個或幾個字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱“轉義”字元。例如,在前面各例題printf函數的格式串中用到的“/n”就是一個轉義字元,其意義是“回車換行”。轉義字元主要用來表示那些用一般字元不便於表示的控制代碼。
常用的轉義字元及其含義
轉義字元 轉義字元的意義
/n 回車換行
/t 橫向跳到下一製表位置
/v 豎向跳格
/b 退格
/r 回車
/f 走紙換頁
// 反斜線符”/”
/’ 單引號符
/a 鳴鈴
/ddd 1~3位八進制數所代表的字元
/xhh 1~2位十六進制數所代表的字元
廣義地講,C語言字元集中的`任何一個字元均可用轉義字元來表示。表2.2中的/ddd和/xhh正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。如/101表示字?quot;A” ,/102表示字母”B”,/134表示反斜線,/XOA表示換行等。轉義字元的使用
在C語言中,對變數的存儲類型說明有以下四種:
auto 自動變數
register 寄存器變數
extern 外部變數
static 靜態變數
自動變數和寄存器變數屬於動態存儲方式, 外部變數和靜態變數屬於靜態存儲方式。在介紹了變數的存儲類型之後, 可以知道對一個變數的說明不僅應說明其數據類型,還應說明其存儲類型。 因此變數說明的完整形式應為: 存儲類型說明符 數據類型說明符 變數名,變數名…; 例如:
static int a,b; 說明a,b為靜態類型變數
auto char c1,c2; 說明c1,c2為自動字元變數
static int a[5]={1,2,3,4,5}; 說明a為靜整型數組
extern int x,y; 說明x,y為外部整型變數
與指針有關的各種說明和意義見下表。
int *p; p為指向整型量的指針變數
int *p[n]; p為指針數組,由n個指向整型量的指針元素組成。
int (*p)[n]; p為指向整型二維數組的指針變數,二維數組的列數為n
int *p() p為返回指針值的函數,該指針指向整型量
int (*p)() p為指向函數的指針,該函數返回整型量
int **p p為一個指向另一指針的指針變數,該指針指向一個整型量。
指針變數的賦值
p可以有以下兩種方式:
(1)指針變數初始化的方法 int a;
int *p=&a;
(2)賦值語句的方法 int a;
int *p;
p=&a;
(1)取地址運算符&
(2)取內容運算符*
㈧ C語言 四種基本數據類型
1、基本類型
short、int、long、char、float、double 這六個關鍵字代表C 語言里的六種基本數據類型。
2、派生數據類型
派生數據類型是具有相同數據類型,並且按照一定順序排列的一組變數的集合。
3、指針類型
指針是一個特殊的變數,它裡面存儲的數值被解釋成為內存里的一個地址。
4、空類型
空類型表示一種未知的類型,不能表示一個真實的變數。
(8)c語言的類型說明符有哪些擴展閱讀:
C語言中整型數據的取值范圍:
1、短整型:類型說明符為short int或short'C110F1。所佔位元組和取值范圍會因不同的編譯系統而有差異。對於16字機,short int 佔2個位元組,在大多數的32位機中,short int 佔4個位元組。
2、長整型:類型說明符為long int或long ,在內存中佔4個位元組,其取值為長整常數。在任何的編譯系統中,長整型都是佔4個位元組。在一般情況下,其所佔的位元組數和取值范圍與基本型相同。
3、無符號型:類型說明符為unsigned。在編譯系統中,系統會區分有符號數和無符號數,區分的根據是如何解釋位元組中的最高位,如果最高位被解釋為數據位,則整型數據則表示為無符號數。
㈨ C語言中普通整型變數的類型說明符為
int 整型float 浮點型char 字元型
㈩ 求C語言類型說明符
其實,這是C中的基礎,但是若不是對C有透徹的理解,絕對回答不清楚!
推薦的參考資料:C Primer Plus ,其中有一章專門講解這個;
在理解C的存儲類說明符之前,首先要搞懂的概念有:作用域、生存周期、鏈接屬性
C中存在如下的作用域:代碼塊作用域、文件作用域
C中變數的生存周期:自動生存周期(自動變數)、靜態生存周期(靜態變數,在程序運行期間始終存在)
C中變數(函數)的鏈接屬性分為:靜態連接屬性、自動鏈接屬性,由static關鍵字標志
C中的存儲類說明符實際上是上述屬性的不同組合(此處只針對變數而言):
auto 具有代碼塊作用域,自動生存周期,外部或者內部鏈接屬性
register 具有代碼塊作用域,自動生存周期,外部或者內部鏈接屬性
static 具有代碼塊或者文件作用域、靜態生存周期、內部鏈接
extern 具有文件作用域(該關鍵字用於全局變數)、靜態生存周期、外部鏈接
以上措辭或有不嚴謹之處,詳情請參考參考資料()!