A. 簡述c語言中的分類及每類特點
1) 語言簡潔,使用方便靈活
C語言是現有程序設計語言中規模最小的語言之一。C語言的關鍵字很少,ANSI C標准一共只有32個關鍵字,9種控制語句。C語言的書寫形式比較自由,表達方法簡潔,使用一些簡單的方法就可以構造出相當復雜的數據類型和程序結構。
2) 可移植性好
C語言是通過編譯來得到可執行代碼的,C語言的編譯程序便於移植,從而使在一種單片機上使用的C語言程序,可以不加修改或稍加修改即可方便地移植到另一種結構類型的單片機上去。
3) 表達能力強
C語言具有豐富的數據結構類型,可以根據需要採用整型、實型、字元型、數組類型、指針類型、結構類型、聯合類型、枚舉類型等多種數據類型來實現各種復雜數據結構的運算。C語言還具有多種運算符,靈活使用各種運算符可以實現其他高級語言難以實現的運算。
4) 表達方式靈活
C語言的語法規則不太嚴格,程序設計的自由度比較大,程序的書寫格式自由靈活
5) 可進行結構化程序設計
6) 可以直接操作計算機硬體
C語言具有直接訪問單片機物理地址的能力,可以直接訪問片內或片外存儲器,還可以進行各種位操作。
7) 生成的目標代碼質量高
B. c語言中,怎麼判斷變數的類型如何判斷一個變數是int還是long int(不通過聲明)
1、首先在c語言中,long long 是C99標准對整形類型做的擴展,每個long long類型的變數佔8位元組,64位。如下圖使用%lld輸出。
C. C語言中如何判斷數據類型
一般來說,我們不會直接使用ASCII碼來處理,因為這樣不夠直觀。比如你說的判定輸入是否是字母,是否是數字,那麼有個比較直觀的方法來處理。如果你看過ASCII碼表,那麼你就知道字數和字母在ASCII碼表中都是連續的,所以這個就比較好解決了。
判定字元ch是否是數字:
if(ch>='0'
&&
ch<='9')
判定字元ch是否是字母:
if(ch>='a'
&&
ch<='z'
||
ch>='A'
&&
ch<='Z')
當然,有已經定義好的庫函數用來判定是否數字和字母,不要加載入頭文件
判定字元ch是否是數字:
if(isalnum(ch));
判定字元ch是否是字母:
if(isalpha(ch));
這兩個函數都是判定成立,結果是true也就是1,判定不成立,結果是false,也就是0.
D. C語言如何判斷文件類型
c語言文件類型指針是通過file
*fp;
這種形式進行定義的。
關於file結構在vc6中有如下定義:
#ifndef _file_defined
struct _iobuf {
char *_ptr; //文件輸入的下一個位置
int _cnt; //當前緩沖區的相對位置
char *_base; //指基礎位置(即是文件的起始位置)
int _flag; //文件標志
int _file; //文件描述符id
int _charbuf; //檢查緩沖區狀況,如果無緩沖區則不讀取
int _bufsiz; //文件緩沖區大小
char *_tmpfname; //臨時文件名
};
typedef struct _iobuf file;
#define _file_defined
#endifc程序用不同的file結構管理每個文件。程序員可以使用文件,但是不需要知道file結構的細節。實際上,file結構是間接地操作系統的文件控制塊(fcb)來實現對文件的操作的,如下圖:
上面圖中的_file實際上是一個描述符,作為進入打開文件表索引的整數。
文件是存放在物理磁碟上的,包括文件控制塊(fcb)和數據塊。文件控制塊通常包括文件許可權、日期(創建、讀取、修改)、擁有者、文件大小、數據塊信息。數據塊用來存儲實際的內容。當打開一個文件時,程序會將物理磁碟上的文件數據塊讀入到內存,然後通過文件指針的移動讀取內存中的文件數據。
相關函數:
file
*fopen(
char
*file,
char
*open_mode
);
//打開文件,讀文件到內存,返迴文件信息結構指針
int
fread(
char
s,
int
size,
int
num,
file
*fp
);
//按位元組讀取文件內容到s中
int
fwrite(
char
s,
int
size,
int
num,
file
*fp
);
//按位元組將s地址中的數據寫到文件中
char
*fgets(
char
*s,
int
max_size,
file
*fp);
//讀一行數據到緩沖區s中
int fseek(
file
*fp,
long
offset,
int
whence);
//移動文件指針到指定位置
void
rewind(file
*fp);
//回到文件頭
long
ftell(file
*fp);
//得到當前文件偏移位置
fclose(fp);
//關閉文件,刷新緩存到物理磁碟上
E. c語言需要定義數據類型,那怎麼判斷定義什麼數據類型
根據自己需要保存的數據是什麼性質來選擇合適的變數類型。如果需要保存的是字元,那麼就選用char類型,如果是一串字元,比方說用來保存姓名或者密碼等等,那麼就可以選用char數組。如果保存的數據沒有小數,那麼就可以選用int類型,在32位的編譯系統下,int類型可以保存,絕對值不大於21億的整數。如果是帶有小數的數據,那麼就需要選用浮點型,float類型可以保存最多有七位有效數據,doubld類型,最多可以保存有15位有效數字。如果保存的數據只有是和否兩種可能,那麼可以選用bool類型。
F. C 語言怎麼判斷傳入數據的類型
通過約定參數類型或者約定參數格式,確定傳入數據的類型。
1、 大多數情況下,參數類型都是確定的,在函數定義時就可以確定類型。此種情況下,不需要函數本身判斷,編譯器會做判斷或轉換。
如
voidfunc(intn);
聲明這樣的函數,參數為int型,當調用時如果實參不是int型,C編譯器會嘗試轉換為int型,如果轉換失敗,則編譯報錯。
2、 對於參數個數和類型不確定的情況,也就是不定參數形式,一般增加一個格式字元串,通過格式字元串解析後續有幾個參數,每個類型是什麼。
典型例子為printf:
intprintf(constchar*fmt,...);
在printf中,後續參數類型及個數都是不確定的,printf會根據參數fmt中包含的格式字元串,來確定後續的參數類型。 比如傳入fmt為"%s%d%lu",那麼printf就會嘗試在後續參數中讀取三個值,類型分別為char *, int,和unsigned long。
除此外,也可以採用其他方式進行約定。
G. C語言中判斷表達式類型
兩個不同值域的類型進行運算,結果會自動轉換為值域較大的類型。
char 1個位元組, int,float4個位元組,double 8個。
更具體的轉換關系,就和編譯器和c語言版本相關。
H. C語言中如何判斷數據類型
例如大寫字母A 的ASCII碼是65剩下依次類推
I. 在c語言中用什麼函數判定一個變數的類型
在c語言中用沒有函數判定一個變數的類型,可以使用sizeof來判斷變數大小。
示例:
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv) //主程序
{
//對C語言內置類型的所佔位元組數的測試
printf("size of char is: %d ",sizeof(char)); //字元型數據所佔位元組數 、
printf("size of short is: %d ",sizeof(short)); //短整形數據所佔位元組數
printf("size of int is: %d ",sizeof(int )); //整形數據
printf("size of short int is: %d ",sizeof(short int)); //短整形
printf("size of long int is: %d ",sizeof(long int)); //長整形數據
printf("size of float is: %d ",sizeof(float)); //浮點型數據
printf("size of double is: %d ",sizeof(double)); //雙精度數據
//對字元及字元串數組所佔位元組數的測量
char a[] ={'a','b','c','d','e'};
printf("size of a[] is: %d ",sizeof(a)); //輸出數組a[]所佔位元組數
char b[]={"abcde"}; //初始化字元串b
printf("size of b[] is: %d ",sizeof(b)); //數組b[]
char c[][3]={{'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'}}; //初始化二維字元型數組
printf("size of c[][] is: %d ",sizeof(c)); //二維數組c所佔位元組數
printf("size of c[0] is: %d ",sizeof(c[0])); //二維數組中的某行所佔的位元組數,例如第0行
printf("size of c[0][0] is: %d ",sizeof(c[0][0])); //某行某個元素,例如第0行第0個元素
//對指針所佔位元組數的測量
char *p=0;
printf("size of *p is: %d ",sizeof(p)); //字元型指針
system("pause");
return 0;
}
(9)c語言分類判斷擴展閱讀
使用sizeof()計算數組長度
將sizeof用於 expr是並沒有計算expr的值。特別是在sizeof *p中,指針p可以是一個無效地址,因為不需要對p做解引用操作。
對char類型或值為char類型的表達式做sizeof操作結果為1。對引用類型做sizeof操作,將返回存放此引用類型對象所需的內存空間大小。
對指針做sizeof操作,將返回存放指針所需的內存大小,注意,如果要獲取該指針指向對象的大小,則必須對該指針進行解引用。對數組做sizeof操作等效於對其元素做sizeof操作的結果乘上數組元素的個數。
因為sizeof返回整個數組在內存中的存儲長度,所以用sizeof數組的結果初一sizeof其元素類型的結果,即可求出數組元素的個數:int sz = sizeof(ia)/sizeof(*ia);
通常將8位的塊作為一個位元組,32位或4個位元組作為一個 「字」。一般的short為半個機器字長,int為一個機器字長。