C语言 变量与常量

1. 修饰符

a)extern:声明一个已定义的变量,不能重新赋值;

注意:不建议在头文件中定义全局变量,而在源文件中定义,然后在头文件中使用extern声明。

因为若头文件中定义了全局变量,然后多个源文件使用该头文件,编译时会报重定义错误。

b)const:修饰的变量不可变;

c)volatile:防止编译器优化;

d)register:建议将变量定义在寄存器中;


2. static变量、全局变量、局部变量

a)static全局变量只能在本文件中访问;

b)static局部变量只初始化一次,下次仍旧使用上次的值;

c)普通全局变量可在其他文件中访问,但访问前需用extern声明;

d)局部变量和全局变量重名,则在局部变量作用域内优先使用局部变量;

e)C++中,局部变量和全局变量重名,在局部变量作用域内想访问全局变量,则可使用::作用域符号,如 ::a

例子如下:

/* fileA.c */ 
static int a = 10; // 静态全局变量,只能在本文件中访问
int b = 20;        // 普通全局变量,可在其他文件中访问

void printA() {
    printf("a = %d\n", a); // 访问静态全局变量a
    printf("b = %d\n", b); // 访问普通全局变量b
}
/* fileB.c */
extern int b;   // 使用extern声明全局变量b

void printB() {
    int b = 30;            // 定义一个同名的局部变量b
    printf("b = %d\n", b); // 访问局部变量b
}
/* fileC.cpp */
int g; // 定义全局变量g

void printB() {
    int g = 30;          // 定义一个同名的局部变量g
    cout << g << endl;   // 访问局部变量g
    cout << ::g << endl; // 访问全局变量g
}

3. 打印格式

有符号int%d
无符号int%u
有符号short%hd
无符号short%hu
有符号long%ld
无符号long%lu
字符%c
float,精度最大7位小数%f (%m.nf,m:打印总宽度,n:小数位数)
double,精度最大15位小数%lf

注意:

(1)

char ch = 'a';

sizeof(ch);  // 1
sizeof('a'); // 4,因为'a'为97,是int类型

(2)将字符转为数字:减去 '0' 即可

char ch = '8';     // ch = 56

int a = ch - '0';  // a = 8;
// 或者
int a = ch - 48;   // 数字0的ascii为48
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟大的马师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值