c - char 的 %d 值是多少?

标签 c

有人能解释一下这个结果吗?请一步步解释清楚。非常感谢。

为什么是-16、-6、-22?编译器如何获得这些值?

代码如下:

int main(void)
{
    char i=240, j=250, sum;
    sum = i+j;
    printf("Result is: %d + %d = %d\n",i,j,sum);

    return 0;
}

结果如下:结果为:-16 + -6 = -22

最佳答案

因为Char是8位并且它的容量是255

When you add i+j you put ‭490‬ in sum

然后对变量进行求和溢出并生成负数

使用 int 而不是 char 作为 sum 变量它将解决您的问题

阅读https://www.cquestions.com/2011/02/char-overflow-in-c.html了解更多信息

关于c - char 的 %d 值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608231/

相关文章:

我们可以定义一个预处理器宏来根据计时器打印调试消息吗?

C:启动旨在识别字符串模式的程序时遇到问题

C:通过大量使用 sin() 来提高函数的性能

c - #includes 在 C 文件中用于处理器特定的实现

c - 如何将给定级别的二叉搜索树转换为链接链?

c++ - 挑战 - Arduino 返回多个数组

c - 我的 (AT&T) 程序集 (x86-x64) 代码应该增加但不增加

c - 在没有循环的情况下生成范围外的随机数

c - 如何在sublime text 2中编译并运行C而不创建exe文件

c - 如何格式化表格,如 C 所示