C语言关键字浅析

您所在的位置:网站首页 unsigned是关键字吗 C语言关键字浅析

C语言关键字浅析

2024-07-11 08:55| 来源: 网络整理| 查看: 265

### C语言关键字浅析系列 ### ### ISO/ANSI C 关键字 ###

unsigned意为“没有标记过的”,在C语言中表示无符号的,与关键字signed对应

这个关键字在很多头文件的变量定义中还是很常见的,一般用在整数类型的符号说明处

 

unsigned的作用是:

声明无符号的整数类型。

 

1、再谈整数类型的存储

如果你有看过我博客中关于int、short、long或signed关键字的文章,应该对整数类型的存储有些印象

计算机中对于数据的存储都是二进制的形式,整数类型是原理相对比较简单的一种,以32位int类型为例

一般的,一个4byte空间存储的二进制数要表示一个数字,其值应该根据int的符号类型而定

因为同样的存储状态在有无符号的类型下可能表示两个不同的值(详见相关文章C语言关键字浅析-signed)

而signed和unsigned的区别基本就在于,是否把存储的某一位看做符号位,unsigned时不看符号位,所以unsigned一般表示的是非负数

如果系统中的C是16位int的,那么signed int能表示-32768 ~ 32767,而unsigned int能表示0 ~ 65535,正数上的区间更大

 

2、unsigned的使用

和signed类似,unsigned一般加在int等整数类型名称前:

/* unsigned可以修饰的几种类型 */ unsigned int a; /* 无符号整型 */ unsigned short b; /* 无符号短整型 */ unsigned long c; /* 无符号长整型 */ unsigned long long d; /* 无符号long long类型 */

引入signed和unsigned的概念后,就要严格注意输入输出时候的格式了(详解见相关文章-signed关键字):

printf("%d, %u", a, b); /* %u是unsigned类型的说明符 */ printf("%u, %d", a, b); /* 如果对signed类型的变量用%u,那就不会去找内存中的符号位,全部当数字位处理 */ /* 这时显示的结果可能与signed本身想表达的值差异很大,数字0情况除外 */ unsigned short c = 4; printf("%hu"); /* %h是短整型,%hu表示无符号短整型 */ unsigned long d = 5; printf("%lu"); /* %l是长整型,%lu表示无符号长整型 */

对于long和long long常量,能使用后缀直接给出unsigned的属性:

120L; /* L后缀表示long常量 */ 120LU; /* 再加上U后缀表示unsigned */ 120LLU; /* LLU表示unsigned long long */ 120ull; /* ull这样写也对 */

 

——参考《C Primer Plus第五版》

 

相关文章:

C语言关键字浅析-signed

C语言关键字浅析-int

C语言关键字浅析-short

C语言关键字浅析-long

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3