【C语言从零到入门】第五节 详解变量与基本数据类型

一、基本数据类型与变量

(一)c语言中的基本数据类型

c语言中的常用的数据类型有:

整数:int

浮点数(小数):float

字符:char

“整数”又被称为“整型”,“小数”又被称为“实型”

我们对于整数和小数都比较熟悉,但字符又是什么呢?不要着急,我们会在下节进行详细讲解,在本节中我们先将它当作普通的整数;

(二)变量

  • 变量类似一个装东西的盒子,你可以先把东西放里面,等需要使用时再把它取出来

  • 一个变量“盒子”理论上能放一个任何东西(只要它能装得下),但是我们要贴一个标签告诉别人这个盒子的大小和它装东西的类型,防止别人将一个过大或其他类型的东西放进里面

    如果你有一个盒子是用来放食物的,但是你没有贴标签,其他人就不知道这个盒子到底可以装什么,于是有人在不知情的情况下放了一些垃圾在里面,那么,这个盒子你还会留着吗?
    即使你留着它也不会再用它放食物了吧。

  • 变量“盒子”有些特殊,它只能放入一个东西。如果一个“盒子”里已经有一个东西,但是你又放入了一个东西,原来的东西就会被“挤出去”

现在,我们要向盒子中放入一支铅笔。

扫描二维码关注公众号,回复: 11201293 查看本文章

方法一:

  1. 首先,我们要拿一个盒子并贴上标签“铅笔盒子”,并给他取名为“盒子1”;

    铅笔盒子 盒子1;
    

    这个步骤较做声明变量,“铅笔盒子”是变量类型,“盒子1”是变量名。

  2. 然后,将一支铅笔放在里面;

    盒子1 = 黑色铅笔;
    

    这个步骤叫变量赋值,“=”是赋值运算符,它的作用是将等号右边的值赋给左边的变量;

方法二:

直接拿一个放铅笔的盒子并把一支铅笔放进去;

铅笔盒子 盒子1 = 黑色铅笔;

这时候,有人想要用你放在“盒子1”中的铅笔写字;

使用(盒子1);

当然,他不可能拿盒子来写字,他用的是盒子中的铅笔,不过计算机语言就是这么神奇。


现在你想向“盒子1”中放入一支蓝色的铅笔

盒子1 = 蓝色铅笔;

注意,当你放入蓝色铅笔的时候,原来盒子里的那支黑色铅笔就会消失,如果现在有人想使用“盒子1”里的铅笔,他拿到的就是蓝色的铅笔。

(三)C语言中的变量

Ⅰ.C语言中变量的声明和赋值:

  1. 声明并赋值

    变量类型 变量名 =;
    
  2. 先声明,再赋值

    变量类型 变量名;
    
    变量名 =;
    

Ⅱ. 变量名的命名规则

C语言中的变量名是不能随便起的,它要也要遵循一定的规则:

  1. 变量名中只能出现英文符号、数字、下划线(_)和美元符号($);

  2. 变量名不能以数字开头;

  3. 大小写敏感,如:变量a和A是两个不同的变量;

  4. 变量名不能与关键字相同;

C语言规定了32个关键字(又称为保留字),变量名不能与这些关键字相同:

auto、double、int、struct;

break、else、long、switch;

case、enum、register、typedef;

char、extern、return、union;

const、float、short、unsigned;

continue、for、signed、void;

default、goto、sizeof、volatile;

do、if、while、static;

Ⅲ. C语言中使用变量的例子

  1. 声明变量a和b,并令a等于1,b等于2;
#include<stdio.h>
void main(){
    //声明并赋值
    int a = 1;
    int b = 2;
}

或者

#include<stdio.h>
void main(){
    //先声明,再赋值
    int a, b;
    a = 1;
    b = 2;
}
/*
 * 在C语言中,如果你想声明两个同样类型的变量,可以进行简写
 * 例如:
   将  int a; 
       int b;
   简写为
   int a, b;
*/

或者

#include<stdio.h>
void main(){
    int a = 1, b = 2;
    //这样简写也是可以的
}
  1. 变量名不能重复
#include<stdio.h>
void main(){
    int a = 1;
    int a = 2; //这句代码是错的,因为已经存在变量a了
}
  1. 变量的使用和修改
#include<stdio.h>
void main(){
    int a = 1; // a的值是1
    a = 2; //a 的值是2
    int b = a; // a的值是2,b的值是2
    
    //如果要使用变量a和b,直接使用它们的名字就可以了
    int c = a + b;  //c的值是4
}

二、变量的存储方式

以下内容可能较难理解,且需要掌握进制转换和文件存储单位的知识,如果你还没有掌握或需要复习一下,请点击下面的链接进行学习

进制转换 点这里

存储单位 点这里

(一)C语言中的基本类型

Ⅰ. 有符号类型(有正负的类型)

整数:int, long int, short int, long long int

浮点数(小数):float, double

字符:char

类型 可简写为
short int short
long int long
long long int long long

Ⅱ. 无符号整型(正整数)

类型 可以简写为
unsigned int unsigned
unsigned short int unsigned short
unsigned long int unsigned long
unsigned long long int unsigned long long

注意:不存在无符号小数

(二)变量在计算机中的存储方式

我们知道,计算机内的一切数据都是以二进制的形式存储的,变量当然也不例外

下面,我们以char类型为例讲解整数类型在计算机的存储方式

首先,我要告诉你,char是8位的,它的取值范围是-128~127

这里会有一个疑问,既然char是8位的,那么它的最大值应该是

1111 1111 (二进制)

即十进制的255

但不要忘了,char的取值还包括负数。

1.有符号类型

对于一个有符号的类型,它的二进制的最高位用来表示它的正负(1表示负数,0表示正数)

剩下的位数才表示它的大小

例如char类型的127

0111 1111

  • 正数的表示方法

    对于正数,它在计算机中的存储方式就是它的二进制

  • 负数的表示方法

    负数在计算机中是利用补码表示的

取补码的规则:

  1. 求它绝对值的二进制
  2. 令符号位即最高位得1
  3. 符号位不变,其他位取反(取反就是0变1,1变0)
  4. 最后令结果加1

例如求-1的补码

  1. 求它绝对值1的二进制

    0000 0001

  2. 将符号位变为1
    1000 0001

  3. 对其余位进行取反
    1111 1110

  4. 最后加1:
    1111 1111

所以-1在计算机中存储的补码是:

1111 1111

2.无符号类型

无符号类型就是没有符号位,直接表示数

所以,无符号类型的最大值要比相应有符号类型的大

例如 unsigned char的最大值就是255


浮点数的表示方式更加复杂,这里先不做解释,感兴趣的同学可以自行搜集资料了解一下

(三)C语言基本类型占用空间的大小

在不同的系统、开发环境(编译器)中各种基本类型占用的空间是不同的

我们可以利用下面的代码查看各种类型占用的空间:

#include<stdio.h>

void main()
{
	
	// C语言中基本类型占用空间的大小
	printf("整数类型:\n");
	printf("int:%d字节\n", sizeof(int));
	printf("short int:%d字节\n", sizeof(short int));
	printf("long int:%d字节\n", sizeof(long int));
	printf("long long int:%d字节\n", sizeof(long long int));
	
	printf("\n浮点(整数)类型:\n");
	printf("float:%d字节\n", sizeof(float));
	printf("double:%d字节\n", sizeof(double));
	
	printf("\n字符类型:\n");
	printf("char:%d字节\n", sizeof(char));
	
	printf("\n无符号类型\n"); 
	printf("unsigned int:%d字节\n", sizeof(unsigned int));
	printf("unsigned short int:%d字节\n", sizeof(unsigned short int));
	printf("unsigned long int:%d字节\n", sizeof(unsigned long int));
	printf("unsigned long long int:%d字节\n", sizeof(unsigned long long int));
	printf("unsigned char:%d字节\n", sizeof(unsigned char));
	
} 

以上代码在64位win10系统上的Dev-C++中运行的结果为:

整数类型:
int:4字节
short int:2字节
long int:4字节
long long int:8字节

浮点(小数)类型:
float:4字节
double:8字节

字符类型:
char:1字节

无符号类型
unsigned int:4字节
unsigned short int:2字节
unsigned long int:4字节
unsigned long long int:8字节
unsigned char:1字节

表 :一般情况下C语言基本类型占用的空间

类型 取值范围 科学计数法表示 占用空间
char -128 ~ +127 -2^7 ~ 2^7-1 1Byte
unsigned char 0 ~ 255 0 ~ 2^8-1 1Byte
short -32767 ~ + 32768 -2^15 ~ 2^15-1 2 Bytes
unsigned short 0 ~ 65536 0 ~ 2^16-1 2 Bytes
int/long -2147483648 ~ +2147483647 -2^31 ~ 2^31-1 4 Bytes
unsigned int/long 0 ~ 4294967295 0 ~ 2^32-1 4 Bytes
long long -9223372036854775808 ~ +9223372036854775807 -2^63 ~ 2^63-1 8 Bytes
unsigned long long 0 ~ 18446744073709551615 0 ~ 2^64-1 8 Bytes
float \ +/- 3.40282e+038 4 Bytes
double \ +/- 1.79769e+308 8 Bytes

三、基本类型的注意事项

Ⅰ. 表示其他进制

只有整数可以表示其他进制

  1. 十六进制

    以0x或0X开头(0是阿拉伯数字0)

  2. 八进制

    以0开头(0是阿拉伯数字0)

  3. 二进制

    以0b或0B开头(0是阿拉伯数字0)

例子:

#include<stdio.h>
void main(){
    int a = 0XFF; //十六进制
    int b = 08;  //八进制
    int c = 0B10101;  //二进制
}

Ⅱ. 科学计数法

只有double类型可以进行科学计数法

double a = 3E2;   //表示3 x 10^2,所以a = 300

//10^2表示10的2次幂
  • E大小写都可以,但为了便于区分,一般使用大写E
  • E后面的数可以是必须是整数(正、负或0都可以),不能是小数

Ⅲ. 长整型long的问题(重要)

声明长整型时数的后面要加上L

long a = 666L;

L大小写都可以,但为了便于区分,一般使用大写L

Ⅲ. 浮点型float的问题(重要)

声明float时数的后面要加上F,因为默认的浮点型都是double

float a = 3.14F;

F大小写都可以





文章到这里就结束了,我们下节再见

原创文章 10 获赞 11 访问量 1064

猜你喜欢

转载自blog.csdn.net/qq_34802028/article/details/106149575