C语言10-常量与变量

变量:可以改变并且有可能改变的量

常量:不可以改变且不能变化的量

声明变量

我们要先明确两个概念,标识符和关键词。

标识符:1.由自己命名的标识。

​ 2.表示变量,函数或其他实体的名称。

​ 3.必须被声明或者定义。

关键词:1.是C语言标准规定词汇。

​ 2.有特殊的意义和用途。

​ 例如:short,int,long,float,double。

​ 3.可以直接在程序中使用。

如果我们想要使用变量就必须将标识符(而不能是关键词)声明为一个变量。

1
2
3
4
5
short a;
int b;
long c;
float d;
double e;

以上的代码就正确的声明了多个变量。

我们就可以根据上面的例子总结出声明变量公式:[数据类型+标识符名+分号]。

1
2
3
4
5
6
#include<stdio.h>
int main(){
int a; //声明int类型的变量a
printf("%d\n",a);//打印输出变量a
return 0;
}

上方的代码以正确的顺序(声明变量,使用变量)执行。

1
2
3
4
5
6
#include<stdio.h>
int main(){
printf("%d\n",a);//打印输出变量a
int a; //声明int类型的变量a
return 0;
}

而上方的这些代码以错误的顺序(使用变量,声明变量)执行。

原因如下。

1
2
3
4
5
6
#include<stdio.h>
int main(){
printf("%d\n",a);//变量a未被声明就被调用
int a;
return 0;
}

如果我们将int a去除程序任然是无法运行的。

由此我们得出:要使用变量,必须先声明变量。

声明变量必须要用到标识符,但标识符的命名也有自己的规则。

标识符的命名规则

1.只能由大小写英文字母,数字或者下划线组成。

​ 例如:int list123这个就不是一个正确的命名。不符合标识符的命名规则。

2.标识符不能以数字开头。

​ 例如:int 1a这个命名以数字开头,不能正确命名。

3.标识符不能是已有关键词。

​ 例如:int long这个命名用到了关键词long,不能正确命名。

变量的初始化和赋值

1
2
3
4
5
6
#include<stdio.h>
int main(){
int a; //声明int类型的变量a
printf("%d\n",a);//打印输出变量a
return 0;
}

这串代码虽然以正确的顺序执行,但是在运行报错。

原因如下。

1
2
3
4
5
6
7
#include<stdio.h>
int main(){
int a; //变量a没有确定的值
//在目前状态下a为随机值
printf("%d\n",a);//打印输出变量a(随机值)无法通过编译。
return 0;
}

想要成功运行就要为变量赋值。

这里有两种可行的方法。

1.变量声明后立即初始化

1
2
3
4
5
6
#include<stdio.h>
int main(){
int a=100; //声明int类型的变量a,并初始化变量a值为100
printf("%d\n",a);//打印输出变量a
return 0;
}

2.变量先声明再变量赋值

1
2
3
4
5
6
7
#include<stdio.h>
int main(){
int a; //声明int类型的变量a
a = 100;//赋值变量a为100
printf("%d\n",a);//打印输出变量a
return 0;
}

初始化和赋值的区别

初始化

int a(变量声明) = 100(数值);

赋值

int a;

a(已声明变量) = 100(数值);

区别在于:变量可以多次赋值但不能多次初始化。

C语言中允许多次赋值,例如。

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main(){
int a; //声明int类型的变量a
a = 1;//赋值变量a为1
printf("%d\n",a);//打印输出变量a(a的值为1)
a = 2;//赋值变量a为2
printf("%d\n",a);//打印输出变量a(a的值为2)
return 0;
}

不能多次初始化,例如。

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main(){
int a; //声明int类型的变量a
a = 1;//赋值变量a为1
printf("%d\n",a);//打印输出变量a(a的值为1)
int a = 2;//变量再次被声明,编译器报错
printf("%d\n",a);
return 0;
}

字面常量

字面常量不需要像变量一样声明,编译器可以自行判断类型。

例如整数,编译器默认会将其认定为int类型,如果整数过大int类型无法定义,编译器就会依次尝试unsighedint,long,unsignedlong,longlong,unsignedlonglong。

带小数的数,编译器默认会认定为double类型。

符号常量

#define 符号常量名 值

上述即为符号常量的定义公式。被定义的符号常量可以在程序中调用。

1
2
3
4
5
6
7
#include<stdio.h>
#define price 100 //运用符号常量定义一样物品的价格为100
int main(){
int all;//声明int类型的变量all
all=3*price;//赋值all为三件这种物品的总价
printf("%d\n",all);//打印输出总价
}