C语言学习:常量与变量

1.  常量

    常量指的是在程序运行期间其数值不发生变化的数据,常见的有:整数常量、浮点常量、字符常量、字符串常量、标识常量。

1.1  整数常量

    整数常量可以是十进制、八进制或十六进制的常量。

    前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。

    整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。例如:

32         //  十进制
0213       //  八进制
0x3b       //  十六进制 
16         //  整数 
16u        //  无符号整数
16l        //  长整数 
16ul       //  无符号长整数 

    整数常量可以带有一个后缀表示数据类型,实际运用如下:

int a = 10;
long b = 100000l;
unsigned int c = 10u;

1.2  浮点常量

    浮点常量由整数部分、小数点、小数部分和指数部分组成,可以使用小数形式或者指数形式来表示浮点常量。

    指数形式的实数一般是由尾数部分、字母e或E和指数部分组成。当一个实数的符号为正号时,可以省略不写,其表示的一般形式如下: 

1.176e+10 表示 1.176乘10的10次方
-3.5789e-8 表示 -3.5789乘10的-8次方

1.3  字符常量

    字符常量是指一个单一字符, 其表示形式是由两个单引号包括的一个字符。

    例如:'A' , 'a' , 'Q' , '0' , '9' , '+' , ':' , '?' , '$' 都是字符常量。

    在C语言中, 字符常量具有数值。字符常量的值就是该字符的ASCII码值。可以把字符常量看做一个字节的正整数。

以下为ASCII码表

TIPS:常用的ASCII码有a-z,A-Z,0-9,只需记住第一个字符的ASCII码然后推导即可,A的ASCII码为65,英文大小写相差32个ASCII码,0的ASCII码为48。

字符常量的运算

char a,b,c,d
    a='D';      // 把68赋值给a
    b='A'+6;    // b存放的是'G'字符
    c=' '+'C';  // c存放的是'C'字符
    d='e'-32;   // d存放的是'E'字符

//a,b,c,d分别做的运算
    a=68;
    b=65+6;
    c=32+67;
    d=101-32;

1.3  字符串常量

    字符串常量是指用双引号括起来的一串字符来表示的数据。(字符串以\0结尾)

//定义字符串常量
char String[]="hello world!";  //系统自动对字符串常量自动加一个'\0'

//字符串常量例子
// "Hello!","6666","张三"

1.4  标识常量

    标识常量是指用标识符代替常量使用的一种常量,其名称通常是一个标识符。标识常量也叫符号常量,一般用大写英文字母的标识符。

1.4.1  #define预处理器

    一般格式为: #define <标识常量名称> <常量>

注意:一般情况,每个标识常量说明式子只能给出一个标识常量,并且占据一个书写行。例如:

#define PI 3.14159
#define NULL 0
#define MAX 100

    在程序中使用这些常量时,编译器会将所有的 PI 替换为 3.14159,NULL替换为0,MAX替换为100。

   定义一个宏名字之后,可以在其他宏定义中使用,例如:

#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO

1.4.2  const关键字

    在程序中使用该const定义时,其值将始终不变,并且不能被修改。

// const 数据类型 常量名 = 常量值
const int MAX = 100;  // 在该程序中,Max的值始终为100,且无法改变

2.  变量

2.1  变量基础

1)变量在程序中用变量名表示。变量名由用户根据其用途任意命名。

2)变量名由字母、数字、下划线组成,不能以数字开头,不能和C语言的关键字重名。

3)在程序运行时,变量占据存储空间的大小由其数据类型决定。变量在内存空间中的首地址,称为变量的地址。

2.2  变量的说明

    变量在程序中使用时,必须预先说明它们的存储类型和数据类型。

    变量说明的一般形式:<存储类型> <数据类型 > <变量名>

    存储类型:是关键词auto、register、static和extern

    数据类型:可以是基本数据类型,也可以是自定义的数据类型

2.3  变量的存储类型

2.3.1  auto

    auto说明的变量只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。(默认是随机值)在函数体的某程序段内说明auto存储类型的变量时可以省略关键字auto,例如:

auto int a;
int b;
double x;

2.3.2  register

    使用 register 定义的变量称为寄存器变量。它定义的变量存放在 CPU 内部的寄存器中,可以加快程序的运行速度。但register变量是要被CPU所接受的类型,意味着register变量必须是一个单个的值,并且长度要小于等于整型的长度。

2.3.3  static 

    static变量称为静态存储类型的变量,既可以在函数体内,也可在函数体外说明。(默认是0)

    局部变量使用static修饰有以下特点:

    1)在内存中以固定地址存放的,而不是以堆栈方式存放

    2)只要程序没结束,就不会随着说明它的程序段的结束而消失,它下次再调用该函数,该存储类型的变量不再重新说明,而且还保留上次调用存入的数值。

举个例子:

#include<stdio.h>                      #include<stdio.h>      
int main(){                            int main(){
     int i=1;                              int i=1; 
     while (i<5){                          while (i<5){
           int a=0;                             static int a=0;
           a++;                                 a++;
           printf("a=%d\n",a);                  printf("a=%d\n",a);
           i++;                                 i++;
}                                      }
     
      return 0;                            return 0;
}                                      }
//运行结果为:a=1                       //运行结果为:a=2
             a=1                                    a=3
             a=1                                    a=4
             a=1                                    a=5

2.3.4  extern

    使用 extern 定义的变量称为外部变量。当变量在一个文件中的函数体外说明,所有其他文件中的函数或程序段都可引用这个变量。使用extern说明的变量是想引用在其它文件中函数体外部说明的变量。static修饰的全部变量,其它文件无法使用。

举个例子:

文件1:

int a = 100;

文件2:

#include<stdio.h>

extern int a;    //如果不加extern语句,系统将找不到变量报错

int main(){
        printf("%d\n",a);

        return 0;
}

TIPS:简单来说就是如果要使用其他文件的变量,就需要在该文件中加上extern来说明变量是其他文件中的。

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值