c - 在 C 中打印字符变量的整数值

标签 c character

最近在我的研究所里,我得到了一个代码,并被要求找出答案。代码如下所示。

#include <stdio.h>
int main()
{
    char ch=500;
    printf("%d\n",ch);
}

输出将作为 -12

我的问题是:如何计算此类代码的值(value)?是否有任何公式或过程可以找到这些值?

最佳答案

代码在句法上是正确的,但与您的想法不同。 正如 Paul Hankin 所建议的那样,当您尝试设置一个不适合 char 变量中的 char 的数字时,您的编译器应该给您一个警告。

一个 char 是 1 个字节,因此如果有符号它可以存储最多 127 个数字,如果无符号则最多可以存储 255 个数字。 值溢出,只考虑低 8 位。

500 = 0b111110100

只取低8位:0b11110100

MSB 是 1,所以它是负数。

1补码加1是0b00001100也就是12

这就是你得到 -12 的原因。

将其替换为 short 或 int 应该可以正确打印 500。

关于c - 在 C 中打印字符变量的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35286004/

相关文章:

Python - 根据字符串中指定的重复字符查找单词

postgresql - 在不重新编译的情况下提高 PostgreSQL 的 NAMEDATALEN

c - C中数组的地址等于它的第一个元素吗

将CPU改为GPU并运行OpenCL程序遇到调用模糊提示

c - 避免误报 -Wswitch 警告

r - 在 R 中匹配文本字符串时处理错误拼写

java - 使用 toString 与字符组成字符串

c - 如何使用 "cat > "将信息写入终端中的 sitin.txt 然后它会输出

c++ - 函数返回的增量指针

clojure - 在clojure中生成从 'a'到 'z'的字符序列