C语言数据类型和变量

数据类型 

首先我们介绍一下各种数据类型,分别是整型、字符型、浮点型和布尔型。

整型有short、int、long、long long四个类型,他们分别占2个、4个、8个(在32位系统中通常占4个字节)、8个字节。

字符型有char类型,用于存储单个字符,通常占一个字节。也可配合数组储存字符串。

浮点型有float、double类型,分别占4个、8个字节,float是单精度浮点数,精度有限,double是双精度浮点数,能表示更精确的小数。

布尔型只有两个取值,true和false,用于表示逻辑真和假,c语言中在头文件里使用。

sizeof操作符 

数据类型长度:用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和scanf介绍

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);//会自动过滤空格直接读取字符

你可能感兴趣的:(c语言,算法,开发语言)