首页 > 解决方案 > 否定字符如何存储在内存中?

问题描述

#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

  1. c=ffffffe9
  2. 我=17

我的问题是 unsigned ints 和 char 变量如何存储在内存中?

标签: c

解决方案


这应该可以帮助您更好地理解它:Signed to unsigned conversion in C - 它总是安全的吗?

“int 数据类型是有符号的,最小范围至少为 -32767 到 32767(含)。实际值在 limits.h 中分别作为 INT_MIN 和 INT_MAX 给出。

无符号整数的最小范围为 0 到 65535(含),实际最大值是同一头文件中的 UINT_MAX。”

享受!:)


推荐阅读