c - 否定字符如何存储在内存中?
问题描述
#include <stdio.h>
int main()
{
int i = 23;
char c = -23;
if (i < c)
printf("Yes\n");
else
printf("No\n");
}
这段代码执行else块,但如果我们用unsigned int i = 23替换整数值,它会执行if块。打印这些值和结果%x
- c=ffffffe9
- 我=17
我的问题是 unsigned ints 和 char 变量如何存储在内存中?
解决方案
这应该可以帮助您更好地理解它:Signed to unsigned conversion in C - 它总是安全的吗?
“int 数据类型是有符号的,最小范围至少为 -32767 到 32767(含)。实际值在 limits.h 中分别作为 INT_MIN 和 INT_MAX 给出。
无符号整数的最小范围为 0 到 65535(含),实际最大值是同一头文件中的 UINT_MAX。”
享受!:)
推荐阅读
- python - 如何更改 outputtypehandler 中的 datetime.date 类型?
- ruby-on-rails - Rails 按钮未启用且链接不出现,如何解决此问题?
- python - 为什么这个 Python 代码中的 memoization 不起作用?
- python - 使用 pygame 和套接字的“SyntaxError:解析时出现意外 EOF”
- python - 如何使用 Tweepy 从私人帐户流式传输推文
- javascript - 为什么我提交后没有显示我的数据?我没看出有什么不对吗?
- html - 为什么我的消息 UI 上没有显示溢出滚动条?
- python - 如果 B 为正,CVXPY 将 Z 设置为 1
- kubernetes - EKS 跨集群内部 DNS 查找
- javascript - 如何在 ejs 文件中使用传递的变量