变量的数据类型及范围笔记

数据类型的作用

数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
例如大胖子必须睡双人床,就给他双人床,瘦的人单人床就够了。

数据类型

在这里插入图片描述

基本数据类型的长度及范围

#include<stdio.h>

 
int main(int argc, const char **argv)
{
	//一个字节8位 
    printf("sizeof(char) = %d\r\n", sizeof(char));
    /*int 代表特定机器中整数的自然长度。
      short类型通常为16位,而long类型通常为32位,int类型可以根据硬件特性自主选择合适的类型长度。
      但有一个限制:short,int至少为16位,long类型至少为32位。*/
    printf("sizeof(int) = %d\r\n", sizeof(int));
    printf("sizeof(short) = %d\r\n", sizeof(short));
    printf("sizeof(long) = %d\r\n", sizeof(long));
    printf("sizeof(void) = %d\r\n", sizeof(void));
    printf("sizeof(float) = %d\r\n", sizeof(float));
    printf("sizeof(double) = %d\r\n", sizeof(double));  
    printf("sizeof(char *) = %d\r\n", sizeof(char *));
    printf("sizeof(int *) = %d\r\n", sizeof(int *));
    printf("sizeof(void *) = %d\r\n", sizeof(void *));

    return 0;
}

类型限定符signed和unsigned

假如对象类型是char
signed char的范围是-127(-2^7-1)~128(2 ^7)
unsigned char的范围是0~255(2^8-1)(在采用二进制是补码的机器上)
相当于signed的二进制最高位的0和1不参与数的大小而是变成了数字正负的标准。

注意事项(转载于yw大佬的博客

1、所有比int型小的数据类型(包括char,signed char,unsigned char,short,signed short,unsigned short)转换为int型。如果转换后的数据会超出int型所能表示的范围的话,则转换为unsigned int型

2、bool型转化为int型时,false转化为0,true转换为1;反过来所有的整数类型转化为bool时,0转化为false,其它非零值都转为true

3、如果表达式中混有unsigned short和int型时,如果int型数据可以表示所有的unsigned short型的话,则将unsigned short类型的数据转换为int型,否则,unsigned short类型及int型都转换为unsigned int类型

举个例子,在32位机上int是32位,范围–2,147,483,648 to 2,147,483,647,unsigned short是16位,范围0 to 65,535,这样int型的足够表示unsigned short类型的数据,因此在混有这两者的运算中,unsigned short类型数据被转换为int型

4、unsigned int 与long类型的转换规律同3,在32位机上,unsigned int是32位,范围0 to 4,294,967,295,long是32位,范围–2,147,483,648 to 2,147,483,647,可见long类型不够表示所有的unsigned int型,因此在混有unsigned int及long的表达式中,两者都被转换为unsigned long

5、如果表达式中既有int 又有unsigned int,则所有的int数据都被转化为unsigned int类型

类型限定符的意义在于:如果能确定一个整型一定大于0,那么unsigned 型可以比signed 型储存多一倍的数据。

下面给一段程序

#include<stdio.h>

 
int main()
{
	int a = -8;
	unsigned int b = 5;
	printf("a+b=%d\n",a+b);
	if(a+b>0){
		printf("a+b>0");
	}else{
		printf("a+b<0");
	}
}

输入结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值