C语言数据类型

C语言数据类型

在这里插入图片描述

按计算机的存储方式可分为两大基本类型:整数类型浮点数类型,不同的种类提供了不同的范围和精度。

关键字

创建基本数据类型要用到8个关键字:int、long、short、unsigned、char、float、double、signed(ANSI C)。

有符号整数

int是所有系统中基本整数类型。

long 或long int 可存储的整数应大于或等于int可储存的最大数;long至少是32位。

short 或short int 整数应小于或等于int 储存的最大数;short至少是16位。通常,long比short 大。例如,在pc中C DOS 编译器提供16位的short和int、32位的long。这完全取决于系统。

C99标准提供了long long类型,至少和long一样大,至少是64位。

无符号整数

无符号整数只有0和正值,这使得该类型能表示的正数范围更大。在所需的类型前面加上关键字unsigned: unsigned int、unsigned long、unsigned short、unsigned long long。单独的unsigned相当于unsigned int。

字符

字符是如A、&、+这样的印刷符号。根据定义,char类型的变量占用1字节的内存。过去,char类通常是8位。然而,C在处理更大的字符集时,char类型可以是16位,或者32位。

这种类型的关键字是char。一些实现使用符号char,但是其他实现使用无符号的char。ANSIC允许使用关键字signed和unsigned指定所需类型。从技术上看,char、unsigned char和signed char是3种不同的类型,但是char类型与其他两种类型的表示方法相同。

布尔类型(C99)

_Bool 是C99新增的布尔类型。它是一个无符号整数类型,只能储存0(表示假)或1(表示真)。包含stdbool.h头文件后,可以用bool表示 _Bool、true表示1、false表示0,让代码与C++兼容。

浮点数和复浮点数类型

C99识别两种浮点数类型:实浮点数和复浮点数。浮点类型由这两种类型构成。

实浮点数可以是正值或复值。C识别3种实浮点数类型。

float是系统中的基本浮点数类型。它至少可以精确表示6位有效数字,通常float为32位。

double(可能)表示更大的浮点数。它能表示比float更多的有效数字和更大的指数。它至少能精确表示10位有效数字。通常double为64位。

long double(可能)表示更大的浮点数。它能表示比double更多的有效数字和更大的指数。

复数由两部分组成:实部和虚部。C99规定一个复数在内部用一个有两个元素的数组表示,第一个元素表示实部,第二个元素表示虚部。有3种复浮点数类型。

float _Complex表示实部和虚部都是float类型的值。

double _Complex表示实部虚部都是double类型的值。

long double _Complex表示实部和虚部都是long double类型的值。

每种情况,前缀部分的类型都称为相应的实数类型(corresponding real type)。例如,double是double _Complex相应的实数类型。

C99中,复数类型在独立环境中是可选的,这样的环境中不需要操作系统也可以运行C程序。在C11中,复数类型在独立环境和主机环境都是可选的。

有3种虚数类型。它们在独立环境和主机环境中(C程序在一种操作系统下运行的环境)都是可选的。虚数只有虚部。这3中类型如下。

float _Imaginary表示虚部是float类型的值。

double _Imaginary表示虚部是double类型的值。

long double _Imaginary表示虚部是long double类型的值。

可以用实数和I值类初始化复数,I定义在complex.h头文件中,表示i(即-1的平方根)。

#include <complex.h>                       //I定义在该头文件中
double _Complex z= 3.0;                    //实部=3.0,虚部=0
double _Complex w= 4.0*I;                  //实部=0.0,虚部=4.0
double _Complex u=6.0-8.0*I;               //实部=6.0,虚部=-8.0

complex.h库包含一些返回复数实部和虚部的函数。

类型的打印转换说明

类型转换说明(十进制)转换说明(八进制;十六进制)
int%d八进制:%o, %#o;十六进制:%x,%X,%#x, %#X
float%f, %e, %E八进制: ; 十六进制:%a, %A
double%f, %e, %E八进制: ; 十六进制:%a, %A
short (或short int)%hd八进制:%ho ; 十六进制:%hx
long (long int)%ld八进制:%lo ; 十六进制:%lx
long long(或long long int)%lld八进制:%llo ; 十六进制:%llx
usigned%u八进制:%uo ; 十六进制:%ux
long float或long double%Ld, %Le, %LE八进制: ; 十六进制:%La, %LA

参考资料:

史蒂芬・普拉达. C Primer Plus (第6版) 中文版[M]. 人民邮电出版社, 2016.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言数据类型中,printf函数对于字符型(char)数据类型的打印,使用%c格式说明符。其中,%c表示按字符形式打印,对应ASCII码表中的字符。例如,当我们要打印一个字符变量c的值时,可以使用printf("c = %c\n", c)来输出字符c的值。 对于浮点型(float/double)数据类型,printf函数使用%f、%e、%E、%g、%G等转换说明符来打印。其中,%f表示按浮点数形式打印,%e和%E表示按科学计数法形式打印,%g和%G表示根据数值大小自动选择%f或%e/%E形式打印。需要注意的是,对于double类型的变量,应使用%lf修饰符,而对于long double类型的变量,应使用%Lf修饰符。 另外,sizeof是C语言的内置运算符,用于计算指定类型的大小,以字节为单位。sizeof操作符的结果类型是size_t,通常使用%zu格式说明符进行打印。例如,可以使用printf("%zu\n", sizeof(int))来打印int类型的大小。 总结起来,对于不同的C语言数据类型,printf函数使用不同的格式说明符进行打印,如%c用于字符型,%f/%e/%E/%g/%G用于浮点型,%zu用于sizeof操作符的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [第二章 C语言数据类型,printf 和 scanf 格式化输入输出](https://blog.csdn.net/m0_74894370/article/details/127900390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Galaxy_Robot

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值