数据类型与转义字符

 数据类型

        在C语言中,每种数据类型的大小都不一样,具体如下:

数据类型 大小(字节)
short int 2~4
int 4
long int 4~8
long long int 8~
float 4
double 8
long double 12~16
char 1
bool 1

        其中bool(布尔)类型是C99新添加的数据类型,只返回ture(1)和flase(0)两个值。

比特位(bit),是CPU能读取的最小单位

字节(Byte),内存最小寻址单位

1Byte = 8bit

转换字符

        使用printf函数打印时,比如 int 对应的 %d,这个%d是格式化占位符,用于指明输出的参数值如何格式化。

        其格式如下:

%[flags][width][.precision][length]specifier

width,宽度。是一个数值,用于指定最小字段的宽度;
.precision,精度通过  ‘.’  分隔字段的宽度和精度,点号后面代表小数点后面的位数。

        以 double 为例,%11.9f 的意思是该数据宽度为11(包括小数点),小数点后有9位,转换字符为f,代表浮点数。总结起来就是——总长度为11,小数点后为9位的浮点数。

        转换字符如下:

类型限定符

        signed表示无符号类型,signed带符号位,可以存负数;unsigned则不行,只能保存正数和0;转换字符为%u。

        默认情况下数据都是signed类型,该类型的存储单元中,左边第一位是符号位,为0表示正数;为1表示负数。该类型能够限定char和整型变量取值范围。

数据类型大小验证实验

        本实验通过sizeof函数获取数据类型的长度。

        sizeof运算符用于获得数据类型或者表达式的长度,其用法有以下几种:

sizeof(变量名)
sizeof 变量名
sizeof(数据类型)

        如果sizeof后是变量名的话是可以不加()的;但是数据类型必须加。为了防止出错建议sizeof的使用都带上括号。

以下是通过DEV C++进行演示的代码及结果:

#include <stdio.h>

int main(void)
{
	int a;
	char b;
	float c;
	double d;
	unsigned short e;
	char f;
	/* 为了确定字符串结束的位置,需要在字符串末尾加 '\0' ,所以字符串大小 = 字符数+1
		部分编译器可以忽略这个问题,但另一部分编译器需要留出 '\0' 的位置并在字符串末尾加上 */
	char g[12] = {'H','e','l','l','o',' ','W','o','r','l','d','!'};
	/* 字符串常量不需要添加 '\0' ,也可以去掉 '{}' */
	char h[] = {"你好,世界!"}; 
	//char h[] = "你好,世界!"; 
	int i[10] = {1,2,3,4,5,6,7,8,9};
	bool j;
	bool k;
	
	a = 100;
	b = 'b';
	c = 3.14;
	d = 3.1415926;
	e = 123;
	f = 67;
	k = 100;
	
	printf("short int         大小为:%d\n",sizeof(short int));
	printf("short             大小为:%d\n",sizeof(short));
	printf("int               大小为:%d\n",sizeof(int));
	printf("long int          大小为:%d\n",sizeof(long int));
	printf("long long int     大小为:%d\n",sizeof(long long int));
	printf("char              大小为:%d\n",sizeof(char));
	printf("Bool              大小为:%d\n",sizeof(bool));
	printf("float             大小为:%d\n",sizeof(float));
	printf("double            大小为:%d\n",sizeof(double));
	printf("long double       大小为:%d\n",sizeof(long double));
	printf("整数 a            大小为:%d\n",sizeof(a));
	printf("字符 b            大小为:%d\n",sizeof b );
	printf("单精度浮点数 c     大小为:%d\n",sizeof(c));
	printf("双精度浮点数 d     大小为:%d\n",sizeof d );
	printf("字符串 g[12]      大小为:%d\n",sizeof g );
	printf("数组 i[10]        大小为:%d\n",sizeof i );
	printf("%d\n",e);
	printf("%c = %d\n",b,b);
	printf("%c\n",f);
	printf("%s\n",g);
	printf("%s\n",h);
	printf("%d\n",j);
	printf("%d\n",k);
}

 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 23:38:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 23:38:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 23:38:03       57 阅读
  4. Python语言-面向对象

    2024-07-17 23:38:03       68 阅读

热门阅读

  1. 初学Python必须知道的14个强大单行代码

    2024-07-17 23:38:03       21 阅读
  2. 讲真,现在留给2024年下半年软考的时间还够吗?

    2024-07-17 23:38:03       22 阅读
  3. 【MySQL】10.用户管理

    2024-07-17 23:38:03       21 阅读
  4. 前端学习(二)

    2024-07-17 23:38:03       17 阅读
  5. JVM 垃圾回收算法

    2024-07-17 23:38:03       21 阅读
  6. 脑电信号中的相位的类型和作用

    2024-07-17 23:38:03       24 阅读
  7. MySQL表中允许有多少个 TRIGGERS(触发器)?

    2024-07-17 23:38:03       19 阅读
  8. 生成式 AI 的发展方向,是 Chat 还是 Agent?

    2024-07-17 23:38:03       17 阅读
  9. 面试题 HashMap中key的存储索引是怎么计算的

    2024-07-17 23:38:03       21 阅读
  10. 深度学习落地实战:人流量监测

    2024-07-17 23:38:03       20 阅读
  11. 【Go系列】Go的内存分配

    2024-07-17 23:38:03       22 阅读