首先我们介绍一下各种数据类型,分别是整型、字符型、浮点型和布尔型。
整型有short、int、long、long long四个类型,他们分别占2个、4个、8个(在32位系统中通常占4个字节)、8个字节。
字符型有char类型,用于存储单个字符,通常占一个字节。也可配合数组储存字符串。
浮点型有float、double类型,分别占4个、8个字节,float是单精度浮点数,精度有限,double是双精度浮点数,能表示更精确的小数。
布尔型只有两个取值,true和false,用于表示逻辑真和假,c语言中在头文件
数据类型长度:用sizeof操作符读取,
#include
int main(){
int a=9;
int b=1;
printf("%zd\n",sizeof(int));//读取int类型的长度
printf("%zd\n",sizeof(a));//输出结果为4,但是a=9,所以读取的是int类型的长度
printf("%zd\n",sizeof(a+b));
输出结果为4,可知sizeof不会计算表达式的值,而是读取数据类型长度
return 0;
}
signed和unsigned分别是有符号和无符号类型
signed
类型:使用最高位作为符号位(0 表示正数,1 表示负数),所以其取值范围是 −2n−1 到 2n−1−1。例如,signed char
(通常为 8 位)的取值范围是 -128 到 127。
unsigned
类型:所有位都用于表示数值,所以其取值范围是 0 到 2n−1。例如,unsigned char
(通常为 8 位)的取值范围是 0 到 255。
告知编译器或解释器要使用一个变量(变量的声明),并指定变量的类型。变量是可以随便命名的吗?当然不是,变量只能以数字、字母和下划线命名,同时不能将数字放在第一位。还要区分大小写,并且不能用关键字作为变量。
#include
int main()
{
int a;//声明一个int类型的变量命名为a
int b=0;//声明一个int类型的变量命名为b,并初始化为0(变量的初始化)
return 0;
}
变量作用域指的是变量的可访问范围。不同作用域的变量,其生命周期和可见性是不同的。有全局变量与局部变量。
#include
int global_a=1;//在函数外创建的变量称为全局变量
int main(){
int a=0;//在函数里创建的变量称为局部变量
return 0;
}
//当局部变量与全局变量重名时,在函数内局部变量覆盖全局变量
//全局变量在所有函数中都能使用,生命周期更长,局部变量在函数结束后会销毁,周期短
算法操作符,一类叫双目操作符,常见的有+,-,*,/,%五个,为什么叫双目操作符呢?原来是他们左右都要有变量或者数字,以下是在编程中的各种操作符的例子。
#include
int main(){
int a=1;
int b=2;
printf("%d\n",a+b);//与数学符号一样,输出结果为3
printf("%d\n",b-a);//输出结果为1
printf("%d\n",a*b);//输出结果为2
printf("%d\n",b/a);//输出结果为2,但是与数学不同的是,我们操作符左右两个是int类型,
//所以结果也为int类型。
printf("%d\n",a/b);//输出结果为0,相当于/是取除法算式中的商,那么余数应该怎么求?
printf("%d\n",a%b);//输出结果为1,%是取余符号,也就是求取余数
//如果我们想连续赋值应该怎么写呢?
int c;
c=b=a+b;
printf("%d\n",c);//输出结果为3,在一个赋值式子中算数应该依次从右向左运算,所以先将a+b的值赋给b再给c
return 0;
}
既然有双目操作符,那什么是单目操作符呢?常见的单目操作符有+、-,那他们的用法跟双目操作符中的有什么区别呢,++表示自增符号,也就是在原来数字基础上加1,那么--就是在原来数字基础上减1。
#include
int main(){
int a=2;
int b=3;
int c,d;
a++;
printf("%d",a);//输出结果为3。
b--;
printf("%d",b);//输出结果为2。
c=a++;
printf("%d",c);//输出结果为3,在前面a的值已经变为了3
//为什么c输出结果不是4而是3呢,当自增符号++在变量前时,则变量先加1再使用,
//若在变量后时,则先使用该变量再进行加1,所以c的值是用的a自增前的值
d=(a++)+(++b);
printf("%d",d);//相当于d=a+(1+b)=6,这就是前置与后置的区别
return 0;
}
printf是打印函数,也就是print+format,按照一个格式来打印
#include
int main(){
int a=1;
printf("hehe\n");//直接打印hehe,在双引号中的符号可以直接被打出来
printf("%d",a);//打印的是1,为什么不是打印%d呢,因为%d是一个占位符,也就是帮逗号后的占
//一个位置常见的占位符有哪些呢?
int num1;
float num2;
char str[10];
printf("整数: %d,浮点数: %f,字符串: %s\n", num1, num2, str);
//double类型的用%lf,单个字符用%c
printf("%5d",num1);//%5d调整数据的长度,当数据不足5位数时对应数据前面会添加空格
//使保证长度为4位数,若大于或等于5位数则原样输出
printf("%-5d",num1);//在后面添加空格
printf("%.5f",123.4);//输出为123.40000,表示在小数点后几位
scanf是读取输入数据
#include
int main(){
int a;
scanf("%d",&a);
//%d与printf里的占位符是一样的,&是取地址符号,scanf是将输入的值传到地址中
//所以&符号必须带上
//程序运行到scanf会停止,等用户输入相应数据后才会继续执行
//也可以输入多组数据
int a,b,c;
scanf("%d %d %d",&a,&b,&c);//scanf在处理数值占位符时会自动过滤空白字符,包括空格,转义字符
scanf(" %c",&ch);//会自动过滤空格直接读取字符