欢迎光临散文网 会员登陆 & 注册

C语言数据类型

2022-11-24 21:50 作者:虚云幻仙  | 我要投稿

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <limits.h> // limits.h头文件提供当前编译器关于整数类型大小限制相关的详细信息MAX/MIN

#include <float.h> // float.h头文件提供当前编译器关于浮点类型大小限制相关的详细信息MAX/MIN

int main(void)

{

int a = 1; // 整数类型int,数字1为int常量

long int la = 1L; //整数类型long int 用long修饰int,long的取值范围应大于等于int的取值范围,在数字常量后面加L或小写的l表示为long常量1L

long long int lla = 1L; // 整数类型long long int,应至少占用8字节/64bit

short int sa = 1; // 整数类型short int 用short修饰int,short的取值范围应小于等于int的取值范围

float f = 1.0f; //浮点类型float,可表示小数部分,C标准规定float类型必须至少能表示6位有效数字,且取值范围至少是10^-37 ~ 10^+37,通常float占4字节/32bit,其中8位用于表示指数的值和指数的符号,24位用于表示非指数部分(尾数或有效数)的值和符号

double d = 1.0; //浮点类型double,双精度浮点,表示范围大于等于float,数字1.0为浮点数常量double常量,浮点数常量需要加小数点,(1.0可写为1.)(而0.1可写为.1) ,数字1.0f为float常量

long double ld = 1.0L; // 浮点类型long double,表示精度大于等于double,1.0L为long浮点数常量

char c = 'c'; // 字符类型character,c语言规定char占1字节/8bit,可直接表示ASCII码的字符,实际存储为整数类型

  unsigned int ua = 1; //unsigned无符号的,可用来修饰数值类型,有符号的数值会使用二进制形式的首位作为符号位(首位为0则正数,为1则负数),用unsigned修饰会使首位也作为数值,所以最大值为有符号类型的2倍+1,最小值为0,与之对应的signed为有符号修饰词

unsigned long long int ulla = 5llu; // 常量5llu

  a = 070; //八进制数,格式以0开头,070即7*8^1+0*8^0=56

a = 0x70; //十六进制,格式以0x开头,0x70即7*16^1+0*16^0=112,无论将变量a表述成什么形式,内部都是使用二进制形式存储

_Bool b = 1; //_Bool布尔类型,boolean,只分为1(即true)和0(即false)

printf("当前编译器规定int的最大值为%d\t最小值为%d\n", INT_MAX, INT_MIN);

// 当前编译器规定int的最大值为2147483647   最小值为-2147483648

printf("int上溢/超出上限%d\n", INT_MAX + 1); //int超出上限会变为最小值,因为最大值的二进制表示为首位0后31位1(01111...),加1会变为首位1后31位0(10000...)即最小值

printf("%o\n", 8); //%o转换说明,将参数显示为 无符号 八进制形式,结果10

printf("%#o\n", 8); //要显示为010则需要使用%#o转换说明

printf("%x\n", 15); //%x转换说明,将参数显示为 无符号 十六进制形式,结果f

printf("%#x\n", 15); //%#x转换说明显示为0xf格式

printf("%llu\n", ulla); //转换说明%llu将参数显示为unsigned long long int形式,%u表示unsigned int类型

printf("%hd\n", sa); //转换说明%hd将参数显示为short形式,相对的%ho为八进制short类型,%hx为十六进制short类型

printf("当前编译器规定float的最大值为%e\t最小值为%e\n", FLT_MAX, FLT_MIN); //float类型使用转换说明%e显示为指数形式如1.0e+1即1.0*10^1,使用%f表示十进制形式如10.0,使用%g自动判断使用e或者f转换说明

// 当前编译器规定float的最大值为3.402823e+38    最小值为1.175494e-38

printf("输入一个ASCII码值:");

scanf("%d", &a);

printf("值%d对应的字符为%c\n", a, a); // a为int类型,%d将a作为int类型输出,%c将a作为char类型输出数值对应的字符

/*结果

输入一个ASCII码值:65

值65对应的字符为A

*/

printf("\aStartled by the sudden sound, Sally shouted,\n\"By the Great Pumpkin, what was that!\"\n"); // \a为蜂鸣符,某些识别该字符的设备会发出警报声,\n为换行符,\t制表符,\b退格符使光标往前移动一格但不删除该字符,\r回车符使光标移至当前行首位,\"表示双引号",\'表示单引号'

d = 64.25; //单独赋值

printf("变量d小数点形式%f\t指数形式%e\t十六进制记数法%a\n", d, d, d);

//变量d小数点形式64.250000        指数形式6.425000e+01    十六进制记数法0x1.0100000000000p+6

//%f表示为小数点形式,默认有效数字位数为float的精度6位,可以通过%.2f更改为显示2位小数,%.f和%.0f同义

// 十六进制记数法为显示十六进制的指数形式,0x1.0100000000000p+6即(1*16^0+1/16^2)*2^6,十六进制的指数是2^n

d = 0xa.1fp10; //十六进制double类型,十六进制的a-f即十进制的10-15,0xa.1fp10即(10+1/16+15/16^2)*2^10,这里的f指15而不是float,如果要表示float常量应写为0xa.1p10f

printf("char类型占用%zd字节\n", sizeof(char)); //sizeof(数据类型)返回数据类型占用的字节数,对应的转换说明为%zd

// char类型占用1字节

printf("%zd\n", sizeof d);// sizeof也可用于返回变量占用的字节数,这种情况既可以用括号的形式,也可以使用空格隔开不加括号的形式 double类型d占用8字节

printf("30 age = %f seconds\n", 30.0 * 3.156e7); // 30.0和3.156e7均为double常量

return 0;

}


C语言数据类型的评论 (共 条)

分享到微博请遵守国家法律