c - 数据类型存储

标签 c types

<分区>

下面的代码打印255,但是如果我将0255分配给x,如第二行,代码打印 173!

这有什么解释吗?

void main()
{
    unsigned long x = 255;
    /* unsigned long x = 0255;*/
    unsigned char *ptr = &x;
    printf("%u",*ptr);
    getch();
}

最佳答案

unsigned char x = 0255;

0255 被认为是八进制 int 文字。这是可行的,因为您可以将 int 文字分配给字符,而八进制 0255(5*8^0)+(5*8^1)+(2 *8^2) = 173 十进制。

访问the reference有关不同形式的符号字符串文字的更多信息,但为了快速引用:

unsigned char x = 0255; // Octal -> 173 in decimal
unsigned char x = 255; // Decimal -> 255 in decimal
unsigned char x = 0x2F // Hexadecimal -> 47 in decimal

关于c - 数据类型存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244993/

相关文章:

types - 同像类型理论

java - Map key/value类型限制,如何关联?

types - SPARQL:如何列出和计算 RDF 数据集中的每种数据类型?

c - 使用/clr 支持编译的 C++-CLI 库调试 C 程序

Python __class__()

C - sscanf 问题

c - 我如何 typedef struct <name> *var_name[32]

variables - 无法在 Kotlin 中打印多个 bool 值

c - 有没有一种简单的方法可以从 C 中的字符串数组创建字符串?

c - 适用于应用程序的可移植 Linux 环境