已知一个整数,如何判断这个整数是无符号的?

简介: 已知一个整数,如何判断这个整数是无符号的?

前言

记录6月11日,肯哥在群里面分享的一个问题。说实话,看到题目想了半天没明白。一看答案,才发现,这题真的简单。

题目

已知一个整数,如何判断这个整数是无符号的?

题解

(1)因为我的思路完全是错误的,我就不再此进行乱分析了。肯哥给出的提示是:C语言中的与、或、非、异或等手段是个好东西。感兴趣的可以在此思考一下。

(2)答案揭晓,是群里面一个大佬说的a > 0 且 ~a > 0。不得不承认差距,一下子就体现出来了,自己还有很多要学习的。 肯哥给出的答案是

#define ISUNSIGN(A) ((A)>=0 && ~(A)>=0)

(3)这个是利用进行取反之后,符号位也会随着取反。说实话,这个知识点我给记混淆了,以为符号位不会取反。

(4)首先,因为如果一个数为负数,那么他铁定就是有符号的数据了。

(5)其次,‘~’进行位取反。同时符号位也会改变。如果对于无符号类型数据,是没有影响的,因为无符号数据是不存在负数的。而如果是有符号数据,那么正数就会变成负数。因此无法通过判断。


总结

(1)C语言的知识点太多了,很容易忘记。我翻了一下我的博客,居然还有专门讲解逻辑取反和算数取反的内容。(哭笑)

(2)知识要反复巩固,今天又学到了一点东西。开心

目录
相关文章
|
10月前
|
C语言
C语言之将十进制整数转换为任意进制整数
C语言之将十进制整数转换为任意进制整数
210 0
|
5天前
|
C语言
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
这篇文章展示了如何使用栈(包括顺序栈和链栈)实现将十进制数值转换成八进制数值的方法,通过C语言编程演示了两种栈的实现方式和使用场景。
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
|
3月前
63.取一个整数a从右端开始的4~7位。
63.取一个整数a从右端开始的4~7位。
27 0
|
2月前
取一个整数 a 从右端开始的 4~7 位
【6月更文挑战第23天】取一个整数 a 从右端开始的 4~7 位。
34 9
|
3月前
求两个整数之和
两幅图片展示,无文字描述。第一张图片链接:`https://ucc.alicdn.com/pic/developer-ecology/jsj5v54nhc5lk_9a19903e665642b388dedfa69ba6dd98.jpg`,第二张图片链接:`https://ucc.alicdn.com/pic/developer-ecology/jsj5v54nhc5lk_9698cabf5d2f4ce38f6ea21a4ee8430e.jpg`。
23 0
|
3月前
|
C++
(C++)字符串相加
(C++)字符串相加
58 0
|
12月前
wustojc1006求2个整数的和
wustojc1006求2个整数的和
35 0
输出整数各位数字
输出整数各位数字
63 0
|
C++
C++ 整数转字符串
C++ 整数转字符串
88 0
【C语言】输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示
输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示