C語言(一) 其他關鍵字

2021-08-09 08:13:39 字數 2357 閱讀 3507

(關鍵字)sizeof:求資料型別位元組數

sizeof.c

#include

int mian()

執行結果:

(關鍵字)volatile:防止編譯時被優化

(關鍵字)const:修飾唯讀變數

const.c

#include

int main()

執行結果:

const就近原則

const int *p; 所指內容不能改變

int * const p; 位址不能改變

const int * const p; 都不能改變

(庫函式)strlen:求字串長度,遇到\0結束

strlen.c

#include

#include

int main()

printf("\nstrlen:%d\n",strlen(a));

return

0;}

執行結果:

分析:char佔乙個位元組,8位,strlen遇到\0結束

符號位為1表示負數,其餘全1表示-1,其餘全0表示負數最大值

個人理解:-7-1=-8

-7的補碼: 1001

-1的補碼: 1111

相加結果:11000,前面越界捨去即1000是-8的補碼

負數補碼的演算法:從左往右第乙個1保持不變,其餘依次取反

題目一:

int i = -20;

unsigned int j = 10;

i+j=?

int i = -20;

unsigned int j = 10;

if (i + j > 0)

printf("big zero\n");

else

printf("small zero\n");

printf("i+j=%d\n",i+j); \\以帶符號的十進位制形式輸出整數

printf("i+j=%u\n",i+j): \\以無符號的十進位制形式輸出整數

執行結果:

分析:往表示大的轉換,這裡有符號轉換為無符號

-20的補碼: 1111 1111 1111 1111 1111 1111 1110 1100

10的源反補一致: 0000 0000 0000 0000 0000 0000 0000 1010

兩數相加: 1111 1111 1111 1111 1111 1111 1111 0110

該數無符號的十進位制為:4294967286

題目二:

unsigned int a = 3;

unsigned int j;

j = a *(-1);

j?

unsigned int a = 3;

unsigned int j;

j = a *(-1);

if(j>0)

printf("big zero\n");

else

ptintf("small zero\n");

printf("j=%d\n",j);

printf("j=%d\n",j);

執行結果:

分析:

-1的補碼: 1111 1111 1111 1111 1111 1111 1111 1111

3的源反補一致:0000 0000 0000 0000 0000 0000 0000 0011

兩數相乘:1111 1111 1111 1111 1111 1111 1111 1101

該數的無符號十進位制表示:4294967293

C語言關鍵字

c語言關鍵字 在檔案範圍的教訓和關鍵字,你知道靜態變數保持他們的價值觀,甚至不在他們超出範圍的破壞。比如說呢。int generateid int main this program prints 01 2 請注意,s nid一直保持它的價值的跨多個函式呼叫。static關鍵字有另一種意思當應用到全...

C語言關鍵字

關鍵字就是已被c語言本身使用,不能作其它用途使用的字。例如關鍵字不能用作變數名 函式名等 由ansi標準定義的c語言關鍵字共32個 auto double int struct break else long switch case enum register typedef char extern...

c語言關鍵字

c 語言標準定義的32 個關鍵字 1 auto 宣告自動變數,預設時編譯器一般預設為auto int 宣告整型變數 double 宣告雙精度變數 雙精度浮點型 long 宣告長整型變數 char 宣告字元型變數 float 宣告浮點型變數 單精度浮點型 6.1 float的有效位通常有 位,指的是小...