C语言第三课 变量

C Primer Plus

常量(constant)
变量(variable)

数据类型

通过一下关键字创建的类型,按照计算机的存储方式分为两大基本类型:整数和浮点数。

int

基本整数类型
%d格式化输出整型,%5d格式化成5位输出。
%o八进制显示,%#o带八进制前缀显示。
%x十六进制显示,%#x、%#X带十六进制前缀显示。

  • 整数溢出,溢出是为定义的行为,C标准并未定义有符号类型的溢出规则。

可移植整数类型stdint.h和inttypes.h

1.C语言为现有类型创建了更多类型名,定义在stdint.h中。

  • 精确宽度整数类型(exact-width integer type):如int32_t, uint_32_t。但是这些依赖于计算机的底层系统的支持。
  • 最小宽度类型(minimum width type): int_least8_t表示可容纳8位有符号整数值的类型中宽度最小的类型的一个别名。
  • 最快最小宽度类型(fastst minimum width type): 如int_fast8_t 表示对8位有符号值而言运算最快的整数类型的别名。
  • 最大整数类型:intmax_t、uintmax_t.

2.有了以上定义类型,就需要提供相应的输入和输出,定义在inttypes.h中。C语言提供了一些字符串宏(后面会提到)来看是可以值类型。如PRid32代表打印32位有符号值的合适转换说明。

可移植类型的更多解析见书的附录B。

long、short、unsigned、signed基本整数类型的变式

long要添加L、l后缀,long long使用LL后缀,u表示unsigned。
%u输出unsigned int。
%ld输出long。
%lx以十六进制数处long。
%lo以八进制输出long。
%hd输出short。
%hu以八进制输出unsigned long。
%lld输出long long。
%llu unsigned long long。

char

字母和其他字符,也表示较小的整数。
单引号括起来的字符。实际存储的是相应的代码值。ASCII值。

  • 非打印字符
    char beep = 7; //直接使用ASCII
    char beep = \a;//使用转义字符
    以上两句是一样的,都是蜂鸣。警报字符改变活跃位置。
    使用ASCII码要注意数字和数字字符的区别。
    %c打印字符

float、double、long double 带小数点的数。

在声明的时候加上f或F后缀,编译器会识别成float类型。使用l或L后缀,编译器会识别成long double类型。没有后缀默认是double类型。

  • 十六进制表示浮点型:p代替e,用2的幂代替10的幂(p计数法)。
    0xa.1fp10 - a = 10
    .1 = 1/16
    .0f = 15/256
    p10 = 2^10
    %f输出浮点数。%e打印指数计数法的浮点数。如果系统支持十六进制,可用啊替代e。
    %Lf、%Le、%La打印long double。

浮点数的溢出分为上溢(underflow)和下溢(subnormal)。

  • 上溢:计算导致数字过大,超过当前类型能表达的范围。
  • 下溢:损失了类型全精度的浮点值称为低于正常的浮点值。
    特殊的浮点值:NaN(not a number)。碰到未定义行为会返回NaN值。

void

_Bool

布尔值(true|flase)仅占一个bit。

_Complex

复数

_Imaginary

虚数

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容