C语言基本数据类型笔记

 

C语言基本数据类型笔记

摘自C primer plus 

  • 位、字节和字
  • 整数类型和浮点数类型

位 (bit):最小存储单元,可以存储0或1

字节(byte):常用计算机存储单元,几乎对所有机器,1字节均为8位

字(word):设计计算机时给定的自然存储单位。对于8位微型计算机1个字长只有8位。个人计算机字长增至16位、32位,直至目前64位。


  • int类型

        其范围依计算机而异 ,早期16位 ,目前32位 、64位,一般存储一个int 要占用一个机器字长。
        ISO C规定int类型范围最小为-32768 ~ 32767(2^{16},除去符号位)。

int main(void)//以十进制 十六进制 八进制打印100
{
	int x = 100;
	
	printf("dec = %d; octal = %o; hex = %x\n", x, x, x );
	
	//显示进制前缀 
	printf("dec = %d; octal = %#o; hex = %#x\n", x, x, x );

	return 0;
}

其他整型:short 类型占用存储空间不能多于int类型; long类型占用存储空间不能少于int 类型

目前个人计算机上常见的设置是,long long占64位,long占32位,short占16位,int占16位或32位(依计算机字长而定,32位64位机都占32位/4Byte)。


 

  • char类型

char类型用于存储字符(字母或标点符号),实际存储的是整数而不是字符,计算机用编码处理字符。C 将1字节定义为char类型占用的位数。

// 显示字符代码编号
int main(void)
{
	char ch;
	char cb;
    cb = 'T'; //字符常量
    cb = "T" ;//字符串
	printf("Please enter a character.\n");
	scanf("%c", &ch);
	printf("The code for %c is %d\n",ch, ch );
	return 0;
}

 


  • float、double类型

C规定 :float类型必须能表示6位有效数字(至少精确表示小数点后6位有效数字),且取值范围至少是10^{-37}~10^{37}
       通常系统存储一个浮点数要占用32位,8位用于表示指数的值和符号,剩下24位用于表示非指数部分。
       double(双精度)类型与float类型最小取值范围相同但必须至少能表示10位有效数字。一般情况下double类型占用64位而不是32位。

int main(int argc, char const *argv[])
{
	float aboat = 32000.0;

	//以两种方式显示float类型的值
	printf("%f can be written %e\n",aboat, aboat );
	return 0;
}

  

  • 数据类型大小

 提供可移植类型 stdint.h inttypes.h,确保C语言类型在各系统功能相同

 在int为32位的系统中会把int32_t作为int的别名

 在int为16位、long为32位的系统会把int32_t作为long的别名 

#include<stdio.h>
#include <inttypes.h> //使用配套宏"PRId64"进行打印 unsigned long long int

// 打印当前系统指定类型大小 
// C99 C11提供%zd转换说明匹配sizeof的返回类型(size_t)
int main(int argc, char const *argv[])
{
	int apples = 3;//正确

    int oranges = 3.0;//不提倡


    //精度丢失
    int cost = 12.99; //丢弃小数部分

    float pi = 3.1415926536;//float只保证前6位精度
    
	printf("Type int has a size of %"PRId64"bytes.\n", sizeof(int));
	printf("Type char has a size of %"PRId64" bytes.\n", sizeof(char));
	printf("Type long has a size of %"PRId64" bytes.\n", sizeof(long));
	printf("Type long long has a size of %"PRId64" bytes.\n", sizeof(long long));
	printf("Type double has a size of %"PRId64" bytes.\n", sizeof(double));
	printf("Type long double has a size of %"PRId64" bytes.\n", sizeof(long double));
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值