首页 > 其他分享 >C语言中的基本数据类型及其格式化输出

C语言中的基本数据类型及其格式化输出

时间:2023-12-05 17:47:38浏览次数:28  
标签:输出 格式化 字节 符号 数据类型 C语言 printf 12345

C语言中的基本数据类型及其格式化输出

基本数据类型

从下图可以看出,C语言中的基本数据类型包括了整型(int)、字符型(char)、浮点型(float)和双精度浮点型(double)

基本数据类型

在声明变量时,不同数据类型都会分配不同的存储空间,而且还跟操作系统有关。

所占存储空间

char                //有符号字符型,1个字节
unsigned char       //无符号字符型,1个字节

short               //有符号短整型,2个字节
unsigned short      //无符号短整型,2个字节

int                 //有符号整型,4个字节
unsigned int        //无符号整型,4个字节

long                //有符号长整型,4个字节
unsigned long       //无符号长整型,4个字节

long long           //有符号超长整型,8个字节
unsigned long long  //无符号超长整型,8个字节

float               //单精度浮点型,4个字节
double              //双精度浮点型,8个字节
long double         //长双精度浮点型,8个字节

不带unsigned的数据类型默认为有符号型,等同于在前面加了一个signed,即signed charchar相同。

sizeof(type)运算符可以得到不同数据类型的所占字节空间大小。例如:sizeof(char)为1,sizeof(short)为2。

stdint.h标准头文件中,可以看到下面的代码,将不同的数据类型起了一个别名,分别有int8_tuint8_tint16_tuint16_tint32_tuint32_tint64_tuint64_t
而且定义了不同数据类型的最大值和最小值。

/* 7.18.1.1  Exact-width integer types */
typedef signed char int8_t;
typedef unsigned char   uint8_t;
typedef short  int16_t;
typedef unsigned short  uint16_t;
typedef int  int32_t;
typedef unsigned   uint32_t;
__MINGW_EXTENSION typedef long long  int64_t;
__MINGW_EXTENSION typedef unsigned long long   uint64_t;
...
/* 7.18.2.1  Limits of exact-width integer types */
#define INT8_MIN (-128)
#define INT16_MIN (-32768)
#define INT32_MIN (-2147483647 - 1)
#define INT64_MIN  (-9223372036854775807LL - 1)

#define INT8_MAX 127
#define INT16_MAX 32767
#define INT32_MAX 2147483647
#define INT64_MAX 9223372036854775807LL

#define UINT8_MAX 255
#define UINT16_MAX 65535
#define UINT32_MAX 0xffffffffU  /* 4294967295U */
#define UINT64_MAX 0xffffffffffffffffULL /* 18446744073709551615ULL */

格式化输出

格式化输出符以百分号%加上字母组成,基本格式有以下几种:

%c   //格式化输出一个字符
%s   //格式化输出一个字符串,传入字符指针,输出到\0结束

%d   //格式化输出一个整数(有符号)
%u   //格式化输出一个整数(无符号)
%o   //格式化输出一个整数(无符号),以8进制表示
%x   //格式化输出一个整数(无符号),以16进制表示
%ld  //格式化输出一个长整数(有符号)
%lld //格式化输出一个超长整数(有符号)
 
%f   //格式化输出一个浮点数
%e   //格式化输出一个浮点数,以科学计数法表示

printf函数可以用于格式化输出,字符格式化输出示例:

char  mstr1[] = "abcde";
printf("mstr1:%s \n", mstr1);
printf("mstr1:%c %c %c %c %c \n", mstr1[0], mstr1[1], mstr1[2], mstr1[3], mstr1[4]);
printf("mstr1_:%s \n", mstr1+2);

输出结果:
字符输出结果

整数格式化输出示例:

printf("%d \n",  12345  );  //输出:12345
printf("%d \n",  -12345 );  //输出:-12345
printf("%d \n",  -12345u);  //输出:-12345

printf("%u \n",  12345  );  //输出:12345
printf("%u \n",  -12345 );  //输出:4294954951

printf("%x \n",  12345  );  //输出:3039
printf("%x \n",  -12345 );  //输出:ffffcfc7

printf("%o \n",  12345  );  //输出:30071
printf("%o \n",  -12345 );  //输出:37777747707

printf("%lld \n", 1234567ll ); //输出:1234567
printf("%lld \n", -1234567ll); //输出:-1234567
printf("%lld \n", -1234567  ); //输出:4293732729
  1. 对于-12345有符号整数,在计算机中存储在4个byte中,16进制为0xffffcfc7,8进制为037777747707,如果按照无符号输出则为4294954951。

  2. 对于12345有符号整数,在计算机中存储在4个byte中,16进制为0x3039,8进制为030071,如果按照无符号输出还是12345。

  3. 对于-1234567有符号整数,在计算机中存储在4个byte中,16进制为0xFFED2979,按照超长整形输出,高位补零,为0x00000000FFED2979,十进制为4293732729。

浮点数格式化输出示例:

printf("%f \n", 3.1415926  );   //输出:3.141593
printf("%e \n", 31415.926  );   //输出:3.141593e+004
printf("%.7f \n", 3.1415926);   //输出:3.1415926
printf("%.3f \n", 314.15926);   //输出:314.159

%f默认输出保留6位小数,也可以自定义小数位数,%.3f为定义输出小数位后3位。(舍去的部分4舍5入)

标签:输出,格式化,字节,符号,数据类型,C语言,printf,12345
From: https://www.cnblogs.com/haostudio/p/17877767.html

相关文章

  • 数据结构常见存储方式c语言
     图---邻接矩阵/*图的邻接矩阵存储表示法*///用两个数组分别存储顶点表和邻接矩阵#defineMaxInt32767//表示极大值,即无穷#defineMVNum100//最大顶点数typedefcharVerTexType;//假设顶点的数据类型为字符型typedefintArcType;//假设边的权值类型为整型......
  • Java 时间戳与格式化字符串互转
    直接看代码:importjava.text.SimpleDateFormat;importjava.util.Date;publicclassTimestamp2DateFormatUsage{publicstaticvoidmain(String[]args){System.out.println("当前时间:"+timestampToFormatDatetime());System.out.printl......
  • 【C语言调用Python】Py_Finalize() 时报 GC 崩溃错误。
    Py_Finalize()时报GC崩溃错误。记一次有趣的报错随笔。报错现场在使用如下的报错代码时,在释放阶段调用Py_Finalize(),报如下Assert崩溃。原因结论在调用函数逻辑里的Exit0中,对变量pModuleDict和pClass进行了手动释放,引用计数-1(宏KLP_RELEASE),这两个变量是借用的引用变量,不......
  • SQL Pretty Printer for SSMS 很不错的SQL格式化插件
    写SQL语句或者脚本时,看到凌乱的格式就头大了,于是决心找一款SQL语句格式化的工具。功夫不负有心人还真的被我找到一款很好用,很方便的SQLServer插件:SQLPrettyPrinterfor SSMS。安装SQLPrettyPrinter以后你可以在SSMS(SQLServerManagementStudio)的菜单栏看到菜单SQLB......
  • 【C语言总集篇】操作符篇——从不会到会的过程
    前言大家好,很高兴又和大家见面了!现在我们以及结束了数组与函数知识板块的学习,今天我们将进入下一个板块——操作符板块的学习,下面开始介绍我们今天的内容吧。一、操作符分类算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式下标引用、函......
  • 时间格式化转换及时间比较compareTo
    时间格式化转换及时间比较compareTo/***时间格式的转换:在具体报错的地方做转换,可能不能从根本上面解决问题。不排除在其他的代码位置也会使用该错误格式的数据。**1.可以将数据源的数据批量格式化yyyy-MM-dd(错误格式:yyyy-MM-dd00:00:00)......
  • 《初学C语言第15天》
    //////————————————————————进阶版////数据在内存中的存储////1.数据类型的介绍//#include<stdio.h>//intmain()//{// inta=10;//4字节// floatf=10.0;//4字节// shortintb=10;// printf("%p\n",f);// return0;//}////整型类型//char......
  • 【C语言基础】float、double 浮点数类型的四舍五入问题
    简短不看版:C语言中,不能进行doublea==doubleb 这样的运算。另外,printf(".1f",&double)的时候,数据输出不同时候,可能会不一样。根本问题时float类型或者double类型的浮点数在计算机中不能精确储存。              单精度浮点型(float)存储方式比如,若我们希......
  • C语言--深入理解指针
    C语言--深入理解指针一.指针的概念要知道指针的概念,要先了解变量在内存中是如何存储的。在存储时,内存被分为一块一块的,每一块都有一个特有的编号。而这个编号可以暂时理解为指针,就是酒店的门牌号一样。变量和地址看下面代码voidmain(){intx=10,inty=20;}代......
  • 【C语言】宏定义不带参数
    ......