首页 > 其他分享 >关键字之signed和unsigned

关键字之signed和unsigned

时间:2024-08-31 22:24:52浏览次数:4  
标签:16 int unsigned long char 关键字 signed

生活中的我们发现数据只有正数,比如:年龄,体重,等,但有些数据是有正负数的,比如:温度,海拔等,那么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;//范围为-128到127

2 unsigned char a;//范围为0到255

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

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


标签:16,int,unsigned,long,char,关键字,signed
From: https://blog.csdn.net/wangjing_0522/article/details/141758126

相关文章

  • `new` 关键字、隐藏基类方法
    new关键字、隐藏基类方法new关键字还可以用来隐藏基类中的方法。当子类的方法名称与基类中的方法名称相同,但不希望子类的方法被视为重写(override)基类的方法时,可以使用new关键字来声明子类的方法,从而隐藏基类的方法。代码示例publicclassBaseClass{publicvirtual......
  • # 泛型中的new关键字的约束的函数
    泛型中的new关键字的约束的函数一般用于泛型约束,在函数或者类的末尾,通过whereT:new()约束,确保T类型可以被实例化。应用场景在封装sqlsugar中我遇到了类似的用法,传给sqlsugar中的entity必须有一个公开的无参构造函数......
  • Java中super关键字的学习
    super关键字目录super关键字1.访问父类的成员变量2.调用父类的方法3.调用父类的构造方法4.在实现接口的类中调用接口的默认方法注意事项在Java中,super是一个关键字,它主要用于在子类中引用父类的成员(包括字段、方法和构造方法),或者用于解决子类和父类之间的命名冲突。以下是s......
  • C++学习——类当中static关键字的作用
    一、类和对象我们知道类是“行为”和“属性”的集合,我们可以通过类来实例化对象,从而定义对象的“行为”和“属性”。比如:classCar{ Stringbrand; Stringlicense; Stringcolor;}CarToyota;这里定义了“Car”的类,通过“Car”这个类实例化了“Toyota”。那么类当中的......
  • PHP8面向对象快速入门三 类的继承 类方法属性重写和final关键字 parent调用父类的方法
    在PHP中,类的继承(继承)是一种机制,允许一个类继承另一个类的属性和方法,从而实现代码的重用和扩展。继承可以帮助你创建一个基于现有类的新类,保留原有类的特性并增加或修改其功能。classAnimal{public$name='dongwu';protected$age=1;private......
  • 5 Python的变量、关键字、命名规则、基本数据类型及类型转换
    本文是Python系列教程第5篇,完整系列请查看Python专栏。1定义变量在Python中定义变量非常简单,你只需要给变量赋值即可。Python会自动检测变量的数据类型。下面是一些基本的例子来展示如何定义不同类型的变量:1.1整数age=251.2浮点数height=1.751.3字......
  • Java中final关键字的学习
    final关键字目录final关键字1.修饰变量2.修饰方法3.修饰类4.修饰方法参数注意事项示例在Java编程语言中,final关键字是一个非常重要的概念,它用于表示一个变量、方法或类是不可变的或不能被进一步修改的。以下是final关键字的几种常见用法:1.修饰变量常量:final修饰的变量......
  • Android开发 - synchronized 关键字控制多个线程对共享资源的访问解析
    什么是synchronizedsynchronized一个关键字,用于实现线程同步。其主要作用是控制多个线程对共享资源的访问,确保被synchronized修饰的代码块或方法同一时间只有一个线程可以执行,从而避免数据不一致的问题为什么需要synchronized在多线程编程中,多个线程可能同时访问和修改......
  • Typecho Joe 导航菜单目录以及搜索关键字回显主题优化版
    Joe是Typecho博客中一款开源免费且非常精美的主题,但是这款主题很早就停止维护了,有些功能作者并没有开发,并且在Typecho更新到1.2.1版本后还出现了一个小BUGJoe主题的知名度很高,所以在原作者停止维护后很多大佬发布过自己魔改的版本,不可否认魔改后的主题BUG基本解决,而且......
  • c++关键字
    关键字作用:关键字是C++中预先保留的单词(标识符)在定义变量或者常量时候,不要用关键字C++关键字如下:关键字1.asmasm(指令字符串):允许在C++程序中嵌入汇编代码。2.autoauto(自动,automatic)是存储类型标识符,表明变量"自动"具有本地范围,块范围的变量声明(如for循环体内的......