C语言数据类型和变量

目录

1.数据类型介绍

 1.1字符型

1.2 整型

1.3 浮点数  

1.4 布尔类型  

1.5 各种数据类型的长度

1.5.1 sizeof操作符

1.5.2 数据类型长度

2.signed和unsignd

4.变量

4.1 变量的创建

 4.2 变量的分类

4.算术操作符:+,-,*,/,%

4.1 +和-

 4.2 *和/

 4.3 %

5.赋值操作符:=和复合赋值

5.1 连续赋值 

5.2 复合赋值符

6.单目操作符:++,--,+,-

6.1 ++和--

6.1.1前置++

 6.1.2后置++

6.1.3前置--

 6.1.4后置--

7.强制类型转换

8.scanf和printf介绍

8.1printf

8.2占位符

占位符就是这个位置可以用其他值代入。

8.3输出格式

8.3.1 限定宽度

8.3.2 限定小数位数

 8.3.3输出部分字符串

8.4 scanf

8.5 scanf返回值

​编辑

​编辑

 


1.数据类型介绍

C语言提供了很多种数据类型来描述生活中的各种数据。

比如:使用整型类型来描述整数,使用字符类型来描述字符,使用浮点数类型来描述小数。

所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道数据的类型,才能知道怎么操作数。

C语言提供的数据类型有:

 1.1字符型

1  char

2  signed char  //有符号的

3  unsigend char  //无符号的

1.2 整型

1  //短整型

2  short  //分有符号和无符号

3  //整型

4  int    //分有符号和无符号

5  //长整型

6  long int  //分有符号和无符号

7  //更长的长整型

8  long long [int]  //分有符号和无符号

1.3 浮点数  

1 float

2 double

3 long double

1.4 布尔类型  

1  _Bool 

在没有布尔类型之前,使用整数0表示假,非零值表示真

作用:用来表示真假。

使用要包含头文件<stdbool,h>

取值:true或者false 

1.5 各种数据类型的长度

每种数据类型都有自己的长度,变量长度的不同,存储的数据范围就有所差异。

1.5.1 sizeof操作符

sizeof是一个关键字,也是一个操作符,专门用来计算sizeof的操作数的类型长度的,单位是字节。

sizeof操作符的操作数可以是类型,也可以是变量或者表达式。

sizeof后面的表达式是不参与计算的,根据表达式的类型来得出大小。

sizeof在代码进行编译的时候,就根据表达式的类型确定了,而表达式的执行却要在程序执行期间才能执行。

sizeof (类型)

sizeof 表达式   //a=b+1 如果a是整型,则计算结果为四个字节,与b+1无关

 sizeof的计算结果是size_t类型。

size_t表示无符号整数。

1.5.2 数据类型长度

int main()
{
	printf("%zd\n", sizeof(int));
	printf("%zd\n", sizeof(unsigned int));
	printf("%zd\n", sizeof(short));
	printf("%zd\n", sizeof(char));
	printf("%zd\n", sizeof(unsigned char));
	printf("%zd\n", sizeof(float));
	printf("%zd\n", sizeof(double));
	printf("%zd\n", sizeof(long long));
	printf("%zd\n", sizeof(_Bool));
	return 0;
}

 运行结果:

2.signed和unsignd

C语言使用signed和unsigned关键字修饰字符型和整形类型。 

signed表示有符号,而unsigned表示无符号。

1   signed  int     //取值范围:-32768~32767

2   unsigned int   // 取值范围:0~65535

 整型变量声明为unsigned的好处是,同样的长度的内存能表示的最大整数值,增大了一倍。

字符类型:

 1  signed char  //范围为:-128~127

2    unsigned char  //范围为:)0~255

在VS2022上,char表示signed char。 

4.变量

4.1 变量的创建

C语言中把变化的值称为变量,不变的值称为常量。

创建变量的语法形式如下:

data_type   name;

       |              |

数据类型    变量名

 比如:

1  int a; //整型变量

2  cahr  ch; //字符变量

3  double d; //浮点型变量

变量在创建的时候要给一个初始值,叫初始化。

1 int age=20;

2 char ch=‘w’;

3 double w=120.0; 

 4.2 变量的分类

  • 全局变量:再打括号外部定义的变量就是全局变量,全局变量的适用范围更广,整个工程都可以使用
  • 局部变量:在大括号内部定义的变量就是局部变量,局部变量使用范围比较局限,只能在自己所在的局部范围内使用

#include<stdio.h >

int b=0;   //全局变量

int main()

{

      int a=0;  //局部变量

      return 0;

}

 当局部变量和全局变量同名时,局部变量优先使用。

内存中分为三个区域:栈区,堆区,静态区。

局部变量存放在内存的栈区。

全局变量存放在内存的静态区。

4.算术操作符:+,-,*,/,%

我们在写代码的时候,一定会涉及到计算。

而在C语言中为了方便运算,提供了一系列操作符,其中有一组操作符叫:算术操作符。分别是:+,-,*,/,%,这些操作符都是双目操作符。(操作符也叫做运算符)。

4.1 +和-

分别完成加法和减法功能,都有2个操作数。

int a = 1+!;

int b = 2-1;

printf("%d\n",a);

printf("%d\n",b);

 4.2 *和/

分别完成乘法和除法功能。除非需要特别注意:如果除法两端操作数是整数,则结果也是整数;如果有一个操作数是浮点数,则结果是浮点数。

int a = 3*3;

printf("%d\n",a);

int b = 4/2;

float c =8.0/2;   //结果是:4.0

float d=6/4;    //结果是:1.0而不是1.5,因为两个操作都是整数,所以只返回整数部分!

 4.3 %

表示求模运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。

负数求模规则是,结果的正负号由第一个运算数的正负号决定。 

int a = 6%4;   //结果为:2 

int b = -11%5;  //结果为:-1

int b = 11%-5;  //结果为:1

5.赋值操作符:=和复合赋值

变量创建的时候给一个初始值叫初始化,在变量创建好后,再给一个值,这叫赋值

int a = 100; //初始化

a = 200;  //赋值

赋值操作符 = 是一个随时可以给变量赋值的操作符。

5.1 连续赋值 

int a = 3;

int b = 4;

int c = 0;

c = b =a+3;//连续赋值

 C语言虽然支持连续赋值,但是写出的代码不容易理解,建议拆开来写,方便观察代码的执行细节。

5.2 复合赋值符

在写代码的时候,会经常对一个数进行自增,自减的操作

int a = 1;

a = a+3;

a = a-1;

//为了方便我们可以写成

a +=3;

a -=1;

 C语言提供了复合赋值符,方便我们编写代码,有如下;

1   +=             -=

2    *=             /=           %=

3     >>=         <<=         

4     &=           |=          ^=

6.单目操作符:++,--,+,-

C语言中有一些操作符只有一个操作数,被称为单目操作符。++,--,+,-这些为单目操作符

6.1 ++和--

++是一种自增操作符,又可分为前置++和后置++,--是一种自减操作符,又可分为前置--和后置--。

6.1.1前置++

计算方式:先+1,后使用

int a = 10;

int b = ++a;   //a先+1变为11,后赋值给b,a和b都变成11

 6.1.2后置++

计算方式:先使用,后+1

int a = 10;

int b = a++;     //a先赋值给b,b=10,然后a+1,变成11

6.1.3前置--

计算方式:先-1,后使用

int a = 10;

int b = --a;   //a先-1,变成9,然后赋值给b,b=9

 6.1.4后置--

计算方式:先使用,后-1

int a = 10;

int b =  a--;    //a先赋值给b ,b = 10,然后a-1变成9.

7.强制类型转换

在操作符中有一类特殊的操作符是强制类型转换,如下:

语法形似    (类型)

int  a = 3.14;    //a是int类型但是赋值3.14是浮点数可以使用以下方式

int  a = (int)3.14;   //把3.14强制转换为int类型,这样只取整数部分

8.scanf和printf介绍

8.1printf

printf()作用是将参数文本输出到屏幕,使用printf函数要包含头文件#include<stido.h>

#include<stdio.h>
int main()
{
	printf("hello world");
	return 0;
}

输出结果: 

如果想换行在末尾添加换行符 \n .

8.2占位符

占位符就是这个位置可以用其他值代入。

#include <stdio.h>
int main()
{
	int a = 10;
	printf("%d\n", a);
	return 0;
}

这里占位符%d用a值替换掉;

常见的占位符有:%d(整数),%c(字符),%s(字符串),%f(浮点数)。

8.3输出格式

printf()可以定制占位符的输出格式。

8.3.1 限定宽度

允许限定占位符的最小宽度。

printf(“%5d\n”,123);   //输出为:  123

 上面的%5d表示这个占位符的宽度至少为5位,如果不满5位,对应的值前面会添加空格。

8.3.2 限定小数位数

输出小数是,有时候需要保留小数后面两位,占位符可以写成  %.2f

printf(“%.2f”,3.1415);  //输出结果为:3.14

 8.3.3输出部分字符串

%s占位符是用来输出I字符串,默认全部输出,如果只想输出前面一部分,可以使用%.[m]s来指定输出长度,[m]代表一个数字。

printf(“%.5s\n”,"hello world");    //结果为:hello

8.4 scanf

scanf函数用于读取用户的键盘输入。

语法形式:

scanf(“%d”,&i);

#include<stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	printf("%d\n", a);
	return 0;
}

 输入10,然后输出10.

 scanf函数在处理占位符时,会自动过滤空白字符,包括空格,制表符,换行符等。

8.5 scanf返回值

scanf函数的返回值是一个整数,表示成功读取的变量个数

如果没有读取任何项,值返回0,如果在读取任何数据之前,发生了读取错误或者遇到读取文件结尾,则返回常量EOF。

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	float f = 0.0f;
	int r = scanf("%d %d %f", &a, &b, &f);
	printf("a=%d b=%d f=%f\n", a, b, f);
	printf("r = %d\n", r);
	return 0;
}

 结果如下:

 如果输入2个数后,按ctrl+z,提前结束输入:

 如果一个都不输入,直接按ctrl+z 三次,则输出-1

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值