在计算机中最小的内存单位为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 <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
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 <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
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 <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
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<stdio.h>
//全局变量
int a = 1;
int main(){
//局部变量
int b = 0;
return 0;
}
全局变量可以在所有函数中访问,局部变量只能在函数体内使用,当全局变量和局部变量冲突时,优先使用局部变量.
1)const修饰常量
当使用const修饰一个变量后,该变量的值就无法被改变了,就是我们所说的常量
2) #define定义的标识符常量
//#定义 标识符 内容
//#define name stuff
#include<stdio.h>
#defin NUM 100
void main(){
printf("%d\n",NUM);
return;
}
#define预处理,可以定义一个
,会在程序中所有NUM替换为100,不同于const常量,define其实本质上对文本内容的替换。
define和const的区别
define是宏定义,程序在预处理阶段将用define定义的内容进行了 替换 。因此在程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。
而const定义的常量,在程序运行时,存在常量表中,且系统为它分配内存。
define定义的常量,预处理时只是直接进行了替换,因此在编译时不能进行数据类型检验。
而const定义的常量,在编译时进行严格的类型检验,可以避免出错。