網(wǎng)站開發(fā)網(wǎng)頁設計北京師范大學出版社關鍵詞優(yōu)化策略
變量和基本數(shù)據(jù)類型
變量類型的概念
變量是在程序中可以發(fā)生變化的量,變量是有類型的,變量的類型決定了變量存儲空間的大小以及如何解釋存儲的位模式。
1字節(jié)(Byte)=8位(bit)
定義格式
存儲類型? ?數(shù)據(jù)類型? ?變量名;
例如:
(auto) int? a;
存儲類型:
? ? ? ? auto、static、register、extern
變量名:
? ? ? ? 是標識符,要遵循標識符命名規(guī)則
數(shù)據(jù)類型:
? ? ? ? 包含名稱、大小(單位字節(jié))和取值范圍
? ? ? ? char、short、int、long、float、double、signed、unsigned
類型 | 存儲大小 | 值范圍 | |
char | 字符類型 | 1字節(jié) | -2^7 ~ 2^7-1 |
unsigned char | 無符號字符類型 | 1字節(jié) | 0 ~ 2^8-1 |
int | 整數(shù)類型 | 4字節(jié) | -2^31 ~ 2^31-1 |
unsigned int | 無符號整數(shù)類型 | 4字節(jié) | 0 ~ 2^32-1 |
short | 短整型 | 2字節(jié) | -2^15 ~ 2^15-1 |
unsigned short | 無符號短整型 | 2字節(jié) | 0 ~ 2^16-1 |
long | 長整型 | 4字節(jié) | -2^31 ~ 2^31-1 |
unsigned long | 無符號長整型 | 4字節(jié) | 0 ~ 2^32-1 |
float | 單精度浮點型 | 4字節(jié) | 有效數(shù)據(jù)到小數(shù)點后6~7位 |
double | 雙精度浮點型 | 8字節(jié) | 有效數(shù)據(jù)到小數(shù)點后15~16位 |
例如:
int c=10,d=10; float a=33.33333333; double b=33.33333333; printf("%f\n%lf\n%d %d\n",a,b,c,d);
輸出結果為:
33.333332
33.333333
10 20
初始化格式
定義時初始化
int? a=10;
先定義再初始化
int? a;
a=10;
局部變量和全局變量
相關概念
生命周期?
變量的生命周期是指變量從創(chuàng)建到銷毀之間的一個時間段,也就是存活的周期,是時間維度。
作用域
作用域是指變量可以起作用的范圍,是空間維度。
內存分區(qū)
全局變量和局部變量的區(qū)別:
局部變量 全局變量 定義位置 函數(shù)體內部 函數(shù)體外部 存儲位置 棧區(qū) 全局區(qū) 生命周期 同函數(shù)體共存亡 同整個程序共存亡 作用域 作用于函數(shù)體內部 作用于整個程序 初值 未初始化時是隨機值 未初始化時是0 #include <stdio.h> #include <stdlib.h>int n1; int mai(int args,char const *argv[]) {int nn2;printf("%d %d\n",n1,n2);return 0; }
輸出結果為:
0? ? 7153974
常量
概念
程序運行過程中不會發(fā)生改變的量叫做常量,常量存放在常量區(qū)。
分類
字符型常量
字符型常量屬于char類型,從ASCII碼表里面能找到的都是字符型常量,用單引號括起來表示,不可以改變,例如:‘A’ 。
類型 | 存儲大小 | 值范圍 | |
char | 字符類型 | 1字節(jié) | -128 ~ 127 |
unsigned char | 無符號字符類型 | 1字節(jié) | 0 ~ 255 |
signed char | 有符號字符類型 | 1字節(jié) | -128 ~ 127 |
原碼、補碼和反碼
最高位表示符號位,正數(shù)是0,負數(shù)是1
正數(shù)的原碼、補碼、反碼都一樣
負數(shù)要用補碼來計算:
????????原碼:在數(shù)值前面直接加符號位表示
????????反碼:符號位不變,其他位按原碼取反
????????補碼:反碼加一
例如:
-5:
? ? ? ? 原碼:1000 0101
? ? ? ? 反碼:1111? 1010
? ? ? ? 補碼:1111? 1011
用‘’(單引號)括起來的就是字符型常量:
‘a(chǎn)’? ? ? ? ?字符a
‘\0’? ? ? ? 空字符
‘\n’? ? ? ? 換行符
例如:
char c='a';//把字符常量a賦值給字符型變量 printf("%c\n",'A'); printf("%c\n",66); printf("%c\n",'\x42');//十六進制的ASCII碼值表現(xiàn)形式 printf("%c\n",'\102');//八進制的ASCII碼值表現(xiàn)形式 printf("%c\n",c); printf("%c\n",'A'+32); printf("%c\n",'A'+' '); printf("%c\n",'A'+1);
補充:
在C語言中規(guī)定轉義字符 ‘\x41’ 中的 \ 是轉義字符引導符,后面跟一個x,表示x后面的數(shù)字是十六進制表示法,用 ‘’(單引號)括起來表示字節(jié)ASCII碼值。轉義字符 \ 后面直接加數(shù)字表示轉義字符后面的數(shù)字是八進制表示法,代表轉義成八進制的字符。
字符串常量
用 “”(雙引號)括起來的就是字符串,字符串后面會自動加上一個 ‘\0’ ,表示字符串結束 。
例如:
? ? ? ? “hello” 字符串結尾有一個 ‘\0’
printf("hello\n");
printf("%s","hello");
整型常量
整型常量是類型為整數(shù)的常量,包括從負數(shù)到零到正數(shù)所有的整數(shù),可以用二進制、八進制、十進制、十六進制表示。
例如:
int a=15;//把整數(shù)常量賦值給整數(shù)變量 printf("%d\n",a); printf("%d\n",0b1111);//二進制輸出15 printf("%d\n",017);//八進制輸出15 printf("%d\n",15);//十進制輸出15 printf("%d\n",0xF);//十六進制輸出15
以上輸出的結果都是15
浮點型常量
浮點型常量就是為浮點數(shù)的常量,包括從負數(shù)到零到正數(shù)所有的浮點數(shù)。
數(shù)據(jù)類型有float和double。
指數(shù)常量
指數(shù)常量就是用科學計數(shù)法表示的常量。
例如:
? ? ? ? 300000 = 3*10^5 = 3e+5
????????0.0000002 = 2*10^-7 = 2e-7
標識符常量(宏定義)
宏定義:起標識符的作用
單純的文本替換,在預處理的時候進行。
必須遵循標識符的命名規(guī)則。
一般大寫標識。
格式:#define? 宏名? 常量或表達式
特點:只能單純的文本替換,不要進行手動運算,(原樣替換,替換完再進行計算)。
#include <stdio.h>
#include <stdlib.h>#define ONE
#define TWO ONE+ONE
#define MORE TWO+ONE+ONE+ONE+ONE+ONE+ONE
#define HELLO "Hello"int main(int argc,char const *argv[])
{printf("%d\n",MORE);printf("%s\n",HELLO);
}
如果一個串長于一行,可在行尾用反斜杠 ‘\’ 進行續(xù)行
#define N 2
#define M N+3 //2+3
#define NUM N+M/2+1 //2+2+3/2+1 = 6
void main()
{int a=NUM;printf("%d\n",a); //6
}