关键字之signed和unsigned

2024-08-31 23:52
文章标签 关键字 unsigned signed

本文主要是介绍关键字之signed和unsigned,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

生活中的我们发现数据只有正数,比如:年龄,体重,等,但有些数据是有正负数的,比如:温度,海拔等,那么C语言中如何表达正负数呢?

1.signed和unsigned

C语言引入signedunsigned关键字来修饰char、short、int、long等整型家族的类型。

使用signed关键字,表示一个类型带有正负号,包含负值。

使用unsigned关键字,表示该类型不带有正负号,只能表示零和正整数。

1char

2[signed]char

3unsigned char

4//短整型

5short [int]

6[signed] short [int]

7unsigned short [int]

8//整型

9int

10[signed] int

11unsigned int

12//长整型

13long [int]

14[signed] long [int]

15unsigned long [int]

16//更长的整型

17//c99中引入

18long long [int]

19[signed] long long [int]

20unsigned long long [int]

2.int类型

对于int类型,默认是带有正负号的,也就是说int等同于signed int。

由于这是默认情况,关键字signed一般都省略不写,但写了也不算错。

1 signed int a;

2 //等同于int a;

3//有符号整数的输入输出格式是%d

int类型也可以不带正负号,只表示非负整数。这时就必须使用关键字unsigned声明变量。

1 unsigned int a;

2//无符号整数输入输出的格式%u

整数变量声明为unsigned的好处是,同样长度的内存能够表示的最大整数值,增大了一倍。比如,16位的signed short int的取值范围是:-32768~32767,最大值是32767;而unsigned short int的取值范围是:0~65535,最大值增大到了65,535

32位的signed int的取值范围可以参看limits.h中给出的定义。

下面的定义是vs2022环境中,limits中相关的定义。

1#define SHRT_MIN   (-32768)   //有符号16位整形的最小值

2#define SHRT_MAN   32767   //有符号16位整形的最大值

3#define SHRT_MAN   0xffff   //无符号16位整形的最大值

4#define SHRT_MIN   (-2147483647 - 1)   //有符号16位整形的最小值

5#define SHRT_MAN   2147483647  //有符号16位整形的最大值

unsigned int里面的int可以省略,所以上面的变量声明也可以写成下面这样。

1unsigned a;

3.特殊的char类型

字符类型char也可以设置signedunsigned

1 signed char a;//范围为-128127

2 unsigned char a;//范围为0255

注:C语言规定char类型默认是否带有正负号,由当前系统决定。

这就是说,char不等同于signed char,它有可能是signed char,也可能是unsigned char这一点与int不同,int就等同于signed int


这篇关于关键字之signed和unsigned的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125358

相关文章

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Java中的volatile关键字多方面解析

《Java中的volatile关键字多方面解析》volatile用于保证多线程变量可见性与禁止重排序,适用于状态标志、单例模式等场景,但不保证原子性,相较synchronized更轻量,但需谨慎使用以... 目录1. volatile的作用1.1 保证可见性1.2 禁止指令重排序2. volatile的使用

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

Java 关键字transient与注解@Transient的区别用途解析

《Java关键字transient与注解@Transient的区别用途解析》在Java中,transient是一个关键字,用于声明一个字段不会被序列化,这篇文章给大家介绍了Java关键字transi... 在Java中,transient 是一个关键字,用于声明一个字段不会被序列化。当一个对象被序列化时,被

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当