与文字混淆,C中的算术

标签 c literals

我编写了以下代码,期望它输出 211,但是当我编译并运行它时,我看到了 137

有人可以解释一下这是怎么回事吗?谢谢。

‎#include <stdio.h>

int main()
{
    int binary1,binary2;

    binary1 = 0100;
    binary2 = 0111;

    printf("%d\n", binary1 + binary2);

    return 0:
}

最佳答案

这些不是二进制数,而是 octal (基数 8):

binary1 = 0100; // = 64
binary2 = 0111; // = 64 + 8 + 1 = 73

printf("%d \n", binary1 + binary2); // = 64 + 73 = 137

关于与文字混淆,C中的算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11494820/

相关文章:

C# 字符串文字作为命令行参数使用@

php - 64 位浮点字面量 PHP

c - 具有 N 个字段的类型 A 是否可以将其合并到具有 N+x 个字段的类型 B 的新对象中?

c - 维吉尼亚如何停止增量

C - 如何检查跟踪进程是否为 32 位?

JavaScript 函数调用。转义字符串中的引号

c - 在这种情况下如何使用malloc?

c - 如何在二维数组中成对存储随机字母?

c - C 字符串文字的结束十六进制指定部分

java - 区分源代码中的文字和变量/符号