变量
我们可以直接声明一个变量,并利用这些变量进行基本的运算,声明格式为:
数据类型 变量名称 = 初始值; // 其中初始值可以不用定义变量时设定
// = 是赋值操作,可以将等号后面的值赋值给前面的变量,等号后面可以直接写一个数字(常量)、变量名称、算式
// 也可以同时赋值多个变量
变量的名称命名的规则:
// 不能重复使用其他变量使用过的变量名
// 只能包含字母或是下划线数字,并且严格区分大小写
//可以包数字但是不能以数字开头
// 不能是关键字
// 建议不用使用拼音,多实用英文,多个词可以使用驼峰命名法
// 建议使英文单词进行设置变量,可以使用驼峰命名法或者下划线命名法。
整数类型
可以使用变量进行一些基基本的运算:
#include <stdio.h>
int main() {
int a = 10; // 将10 作为a 的值
int b = 20; // b赋值为b
int c = a + b; //变量c 等于变量a 加上变量b
}
注意:变量一定要先定义再使用
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int c = a+b;
printf(c); //直接打印变量c
}
但是这样代码是没有办法跑起来的,并且还会出现红色的下标
错误的原因是因为printf是用于格式化打印的将输出的代码修改为以下内容即可:
printf("%d",c);//打印变量c
其他的格式控制符:
格式控制符 | 说明 |
---|---|
%c | 输出一个单一的字符 |
%hd,%d,%ld | 以十进制、有符号的形式输出short、int、long类型的整数 |
%hu,%u,%lu | 以十进制、无符号的形式输出short、int、long 类型的整数 |
%h、%o、%lo | 以八进制、不带前缀无符号的形式输出short、int、long、类型的整数 |
%#ho、%#o、%#lo | 以八进制、带前缀、无符号的形式输出 short、int、long 类型的整数 |
%hx、%x、%lx %hX、%X、%lX | 以十六进制、不带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字也小写;如果 X 大写,那么输出的十六进制数字也大写。 |
%#hx、%#x、%#lx %#hX、%#X、%#lX | 以十六进制、带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字和前缀都小写;如果 X 大写,那么输出的十六进制数字和前缀都大写。 |
%f、%lf | 以十进制的形式输出 float、double 类型的小数 |
%e、%le %E、%lE | 以指数的形式输出 float、double 类型的小数。如果 e 小写,那么输出结果中的 e 也小写;如果 E 大写,那么输出结果中的 E 也大写。 |
%g、%lg %G、%lG | 以十进制和指数中较短的形式输出 float、double 类型的小数,并且小数部分的最后不会添加多余的 0。如果 g 小写,那么当以指数形式输出时 e 也小写;如果 G 大写,那么当以指数形式输出时 E 也大写。 |
%s | 输出一个字符串 |
定义浮点数类型的变量
#include <stdio.h>
int main() {
double a = 0.5;
float b = 2.5f;
printf("a+b=%f",a+b)
}
这个时候我们需要注意两个地方:
2.5f
如果这里直接写2.5默认表示的是一个double类型的数值,需要在后面加一个f
或者是F
表示的是float的类型。
%f
根据上面的表可以了解到如果是浮点数使用%f表示
字符串类型的变量
# include <stdio.h>
int main(){
char c = 'A' //字符需要使用单引号囊括,且只能有一个字符,不能写成'AA',这就不是单个字符了
}
结果:
也可以通过ASCII 码打印出对应的字符:
# include <stdio.h>
int main(){
char c = 66;
printf("%c,%d",c,c)}
结果:
变量除了有初始值之外,也可以在后续的过程中得到新的值:
#include <stdio.h>
int main() {
short s = 10;
s = 20; //重新赋值为20,注意这里就不要再指定类型了,指定类型只有在声明变量时才需要
printf("%d", s); //打印结果
}
重新赋值为20,注意这里就不要再指定类型了,指定类型只有在声明变量时才需要
那要是我们不对变量设定初始值呢?那么变量会不会有默认值:
# include <stdio.h>
int main(){
int a,b,c,d;
printf("%d,%d,%d,%d",a,b,c,d)
}
如果变量没有设定初始值,那么他的值就是不确定的(并不是默认的值就是0),至于为什么不是0,这是因为内存分配机制
#include <stdio.h>
int main() {
char c = 127;
c = c + 1;
printf("%d", c);
}
127 + 1=【 01111111 + 1】由于现在是二进制,满2进1,所以最后变成,10000000 = 补码形式的 -128