2.基本数据类型

在计算机中最小的内存单位为bit(比特),而另一个比较基本的数据单位为Byte(字节),其余的可以自己查找一下,暂时也用不到.

在C中有几种数据类型分为整数型,浮点数型,字符类型.

(1)整数类型

有符号:

1)int类型
数据类型大小是 4 字节,能表示的数值范围是
-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)
打印类型是 %d ,使用格式为 int 名 = 值;

2)short类型
数据类型大小是 2 字节,能表示的数值范围是
-2^(16-1) – 2(16-1) -1 (即 -32768 ~ 32767)
打印类型是 %hd ,使用格式为 short 名 = 值;

3)long类型
数据类型大小是 4 字节,能表示的数值范围是
-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)
打印类型是 %ld ,使用格式为 int 名 = 值;

4)long long类型
数据类型大小是 8 字节,能表示的数值范围是
-2^(63) ~ 2^(63)-1 (这个数足够大了)
打印类型是 %lld ,使用格式为 long long 名 = 值;

无符号数用 unsigned 表示 ,只表示数据量,而没有方向(没有正负,且无符号数最高位不是符号位,而就是数的一部分,无符号数不可能是负数。

无符号:

1)unsigned int 类型
数据类型大小是 4 字节(在64位中为8字节),能表示的数值范围是
0 – 2^(32)-1 (即 0~4294967295)
打印类型是 %u ,使用格式为 unsigned int 名 = 值;

2)unsigned short 类型
数据类型大小是 2 字节,能表示的数值范围是
0 ~ 2^8 -1 (即 0~65535)
打印类型是 %hu ,使用格式为 unsigned short 名 = 值;

3)unsigned long 类型
数据类型大小是 4 字节,能表示的数值范围是
0 – 2^(32)-1 (即 0~4294967295)
打印类型是 %lu ,使用格式为 unsigned long 名 = 值;

4)unsigned long long 类型
数据类型大小是 8 字节,能表示的数值范围是
0~2^63-1
打印类型是 %llu ,使用格式为 unsigned long long 名 = 值;
 

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 

int main0401(void)
{
	size_t var = 10;
	printf("var = %u\n", var);

	unsigned int a = 10u;  // 简写成 unsigned int a = 10;
	unsigned short b = 20u;// 简写成 unsigned short b = 20;
	unsigned long c = 30Lu; 
	unsigned long long d = 40LLu;

	printf("unsigned int 型数据值:%u\n", a);
	printf("unsigned short 型数据值:%hu\n", b);
	printf("unsigned long 型数据值:%lu\n", c);
	printf("unsigned long long 型数据值:%llu\n", d);

	system("pause");

	return EXIT_SUCCESS;
}

(2)浮点数类型

1)单精度浮点型(float)
单精度浮点型的大小是 4 字节
float v1 = 4.345;
unsigned float v1 = 4.345; 无符号的 float 数据
格式匹配符是:%f , 默认保留 6 位小数。

2)双精度浮点型(double)
双精度浮点型的大小为 8 字节
double v2 = 5.678;
unsigned double v2 = 5.678; 无符号的 double 数据

printf(“n = %08.3f\n”, n);
输出的含义为:显示8位数(包含小数点), 不足8位用0填充。并且保留3位小数。对第4位做四舍五入。

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 

int main(void)
{
	float m = 3.145;
	double n = 4.566545;

	printf("m = %08.2f\n", m);
	printf("n = %08.3lf\n", n);

	system("pause");
	return EXIT_SUCCESS;
}

(3)字符类型

字符型变量用于存储一个单一字符,在 C 语言中用 char 表示,其中每个字符变量都会占用 1 个字节。字符变量实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的 ASCII 编码放到变量的存储单元中。char的本质就是一个1字节大小的整型。

char 的格式匹配符(打印格式) 为:%c

字符的本质其实是一个整数,使用ASCII码来表示字符类型,具体的参考ASCII表.

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 

int main(void)
{
	char ch = 'M';
	char var = '5';

	printf("ch = %c\n", ch + 32);
	printf("var = %c\n", var + 4);

	printf("'\\n\'的值为=%d\n", '\n');

	system("pause");
	return EXIT_SUCCESS;
}

可以将字符串转换为整数,也可以将整数转换为字符串.

(4)对于基本类型的变量声明

变量可以分为全局变量和局部变量.

#include

//全局变量
int a = 1;
int main(){

   //局部变量
  int b = 0;
  return 0;
}

全局变量可以在所有函数中访问,局部变量只能在函数体内使用,当全局变量和局部变量冲突时,优先使用局部变量.

1)const修饰常量

当使用const修饰一个变量后,该变量的值就无法被改变了,就是我们所说的常量

2) #define定义的标识符常量

//#定义   标识符 内容
//#define name  stuff


#include
#defin NUM 100
void main(){
  printf("%d\n",NUM);
  return;
}

 #define预处理,可以定义一个

,会在程序中所有NUM替换为100,不同于const常量,define其实本质上对文本内容的替换。

define和const的区别

define是宏定义,程序在预处理阶段将用define定义的内容进行了 替换 。因此在程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。


而const定义的常量,在程序运行时,存在常量表中,且系统为它分配内存。
define定义的常量,预处理时只是直接进行了替换,因此在编译时不能进行数据类型检验。
而const定义的常量,在编译时进行严格的类型检验,可以避免出错。

你可能感兴趣的:(C,学习)