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

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

前言

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

题目

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

题解

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

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

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

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

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

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


总结

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

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

目录
相关文章
|
6月前
|
C语言
C语言之将十进制整数转换为任意进制整数
C语言之将十进制整数转换为任意进制整数
153 0
|
2月前
取一个整数 a 从右端开始的 4~7 位
取一个整数 a 从右端开始的 4~7 位。
22 1
|
4月前
|
C++
(C++)字符串相加
(C++)字符串相加
43 0
|
8月前
wustojc1006求2个整数的和
wustojc1006求2个整数的和
29 0
|
10月前
|
C语言
整数和浮点数的任意进制转!!(包括16进制)确定不进来看看?!
整数和浮点数的任意进制转!!(包括16进制)确定不进来看看?!
103 0
|
11月前
|
C++
C++ 整数转字符串
C++ 整数转字符串
75 0
|
11月前
|
C语言
【C语言】输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示
输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示
|
JavaScript 前端开发
数字和字符串相加
数字和字符串相加
92 0
05:整数大小比较
05:整数大小比较
89 0
LeetCode 1317. 将整数转换为两个无零整数的和
LeetCode 1317. 将整数转换为两个无零整数的和