1. 修飾符
a)extern:聲明一個(gè)已定義的變量,不能重新賦值;
注意:不建議在頭文件中定義全局變量,而在源文件中定義,然后在頭文件中使用extern聲明。
因?yàn)槿纛^文件中定義了全局變量,然后多個(gè)源文件使用該頭文件,編譯時(shí)會(huì)報(bào)重定義錯(cuò)誤。
b)const:修飾的變量不可變;
c)volatile:防止編譯器優(yōu)化;
d)register:建議將變量定義在寄存器中;
2. static變量、全局變量、局部變量
a)static全局變量只能在本文件中訪問;
b)static局部變量只初始化一次,下次仍舊使用上次的值;
c)普通全局變量可在其他文件中訪問,但訪問前需用extern聲明;
d)局部變量和全局變量重名,則在局部變量作用域內(nèi)優(yōu)先使用局部變量;
e)C++中,局部變量和全局變量重名,在局部變量作用域內(nèi)想訪問全局變量,則可使用::作用域符號(hào),如 ::a;
例子如下:
/* fileA.c */
static int a = 10; // 靜態(tài)全局變量,只能在本文件中訪問
int b = 20; // 普通全局變量,可在其他文件中訪問
void printA() {
printf("a = %d\n", a); // 訪問靜態(tài)全局變量a
printf("b = %d\n", b); // 訪問普通全局變量b
}
/* fileB.c */
extern int b; // 使用extern聲明全局變量b
void printB() {
int b = 30; // 定義一個(gè)同名的局部變量b
printf("b = %d\n", b); // 訪問局部變量b
}
/* fileC.cpp */
int g; // 定義全局變量g
void printB() {
int g = 30; // 定義一個(gè)同名的局部變量g
cout << g << endl; // 訪問局部變量g
cout << ::g << endl; // 訪問全局變量g
}
3. 打印格式
有符號(hào)int | %d |
無符號(hào)int | %u |
有符號(hào)short | %hd |
無符號(hào)short | %hu |
有符號(hào)long | %ld |
無符號(hào)long | %lu |
字符 | %c |
float,精度最大7位小數(shù) | %f (%m.nf,m:打印總寬度,n:小數(shù)位數(shù)) |
double,精度最大15位小數(shù) | %lf |
注意:
(1)文章來源:http://www.zghlxwxcb.cn/news/detail-473287.html
char ch = 'a';
sizeof(ch); // 1
sizeof('a'); // 4,因?yàn)?a'為97,是int類型
(2)將字符轉(zhuǎn)為數(shù)字:減去 '0' 即可文章來源地址http://www.zghlxwxcb.cn/news/detail-473287.html
char ch = '8'; // ch = 56
int a = ch - '0'; // a = 8;
// 或者
int a = ch - 48; // 數(shù)字0的ascii為48
到了這里,關(guān)于C語言 變量與常量的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!