数据类型介绍
数据类型,编译器预算对象(变量)分配内存空间大小
基本类形
类型 | 类型名称缩写(常用) | 类型名称全称 | 字节数 | 取值范围 | 常量后缀表示 |
---|---|---|---|---|---|
有符号字符型 | char | signed char | 1 | 无 | |
有符号整形 | short | signed short int | 2 | -32768 ~ 32767 | 无 |
有符号整形 | int | signed int | 4 | -2147483548~2147483647 | 无 |
有符号整形 | long | signed long int | Windows为4字节,Linux为4字节(32位),8字节(64位) | -2147483548~2147483647 | 无 或 l |
有符号整形 | long long | signed long long int | 8 | -9223372036854775808~9223372036854775807 | 无、l、ll |
无符号字符型 | unsigned char | unsigned char | 1 | 无 | |
无符号整形 | unsigned short | unsigned short int | 2 | 0~65535 | 无 |
无符号整形 | unsigned int | unsigned int | 4 | 0~4294967295 | u |
无符号整形 | unsigned long | unsigned long int | Windows为4字节,Linux为4字节(32位),8字节(64位) | 0~4294967295 | ul |
无符号整形 | unsigned long long | unsigned long long int | 8 | ull | |
浮点型 | float | float | 4 | ±3.4E±38 | f |
浮点型 | double | double | 8 | ±1.7E±308 | 无 |
浮点型 | long double | long double | 12 | ±1.19E±4932 | l |
其他数据类型:
1.数组类型
2.结构类型
3.联合类型
4.枚举类型
5.指针类型
定义类型格式
#include <stdio.h>
/** 变量定义: 数据类型 变量名[标示符] */
/** 变量赋值: 变量名[标示符] = 值 */
/** 变量定义并赋值: 数据类型 变量名[标示符] = 值 */
/** 标示符命名规则 */
/** 1. 字母,数字,下划线组成 */
/** 2. 不能以数字开头 */
/** 3. 见名知义 */
/** 4. 不能和同一函数内变量名相同 */
/** 5. 不能和c语言关键字相同 */
int main(void)
{
//定义有符号整形int类型变量a并赋值,没明确数据类型有无符合,默认为有符号类型
int a = 10;
//定义无符号整型int类型变量b并赋值
unsigned int b = 10;
printf("%d\n", a);
printf("%u\n", b);
return 0;
}
变量:程序运行中可以被改变的量,存在于内存中;定义一个变量是指在内存中开辟空间,告诉编译器声明这个变量
常量:具体的数值,在程序中不可更改
例如 int a = 10; 可以理解为把常量10赋值给变量a
定义char类型变量
#include <stdio.h>
int main(void)
{
/*
* C 语言中,char 类型也分无符号和有符号两种,默认为有符号,前面加 unsigned,表示无符号。
* 平时多在字符串处理中使用 char 类型,并默认使用有符号,这样用基本没问题,因为 ascii 码的范围在 0~127,使用有符号类型存储 ascii 码就够了。但在遇到一些特殊用法时,需要考虑符号问题,以免出现潜在的风险。
*/
int num = -10;
char char_a = 'A';
unsigned char unchar_a = 'A';
char_a = num;
unchar_a = num;
/*以十进制方式打印出值对比*/
printf("%d\n", char_a);
printf("%d\n", unchar_a);
return 0;
}
定义short整形类型变量
#include <stdio.h>
int main(void)
{
//定义有符号整形short,声明变量时有符号可以省略signed
short short_num1 = 10;
short short_num2 = 32768;
short short_num3 = -32769;
printf("signed short short_num1 = %hd\n", short_num1);
printf("signed short short_num2 = %hd\n", short_num2);
printf("signed short short_num3 = %hd\n", short_num3);
printf("signed short short_num1 = %d\n", short_num1);
printf("signed short short_num2 = %d\n", short_num2);
printf("signed short short_num3 = %d\n", short_num3);
//定义无符号整形short,无符号不能省略unsigned
unsigned short unshort_num1 = 10;
unsigned short unshort_num2 = 65536;
unsigned short unshort_num3 = -1;
printf("unsigned short unshort_num1 = %hd\n", unshort_num1);
printf("unsigned short unshort_num2 = %hd\n", unshort_num2);
printf("unsigned short unshort_num3 = %hd\n", unshort_num3);
printf("unsigned short unshort_num1 = %d\n", unshort_num1);
printf("unsigned short unshort_num2 = %d\n", unshort_num2);
printf("unsigned short unshort_num3 = %d\n", unshort_num3);
}
定义int整形类型变量
#include <stdio.h>
int main(void)
{
//定义有符号整形int,声明变量时有符号可以省略signed
int int_num1 = 10;
int int_num2 = 2147483648;
int int_num3 = -2147483647;
printf("signed int int_num1 = %d\n", int_num1);
printf("signed int int_num2 = %d\n", int_num2);
printf("signed int int_num3 = %d\n", int_num3);
//定义无符号整形int,无符号不能省略unsigned
unsigned int unint_num1 = 10;
unsigned int unint_num2 = 4294967296;
unsigned int unint_num3 = -1;
printf("unsigned int unint_num1 = %u\n", unint_num1);
printf("unsigned int unint_num2 = %u\n", unint_num2);
printf("unsigned int unint_num3 = %u\n", unint_num3);
printf("unsigned int unint_num1 = %d\n", unint_num1);
printf("unsigned int unint_num2 = %d\n", unint_num2);
printf("unsigned int unint_num3 = %d\n", unint_num3);
}
其他整形类似
定义浮点类型变量
#include <stdio.h>
int main(void)
{
//定义float浮点类型,需要在数值末尾添加一个f,以区别double类型
float float_num1 = 2.5f;
float float_num2 = 2.0f;
printf("float float_num1 = %f\n", float_num1);
printf("float float_num2 = %f\n", float_num2);
printf("float float_num1 = %.2f\n", float_num1);
printf("float float_num2 = %.2f\n", float_num2);
//定义double浮点类型
double double_num1 = 123E30;
double double_num2 = 123.0;
printf("double double_num1 = %f\n", double_num1);
printf("double double_num2 = %f\n", double_num2);
printf("double double_num1 = %.2f\n", double_num1);
printf("double double_num2 = %.2f\n", double_num2);
//定义long double浮点类型,需要在数值末尾添加一个大写L或小写l
long double longdouble_num1 = 1234567.891233L;
long double longdouble_num2 = 123.0l;
printf("long double longdouble_num1 = %f\n", longdouble_num1);
printf("long double longdouble_num2 = %f\n", longdouble_num2);
printf("long double longdouble_num1 = %.2f\n", longdouble_num1);
printf("long double longdouble_num2 = %.2f\n", longdouble_num2);
}