gpt4 book ai didi

c - 以下在编程上下文中是什么意思,特别是 C 编程语言?

转载 作者:行者123 更新时间:2023-12-05 08:46:15 25 4
gpt4 key购买 nike

representations of values on a computer can vary “culturally” from architecture to architecture or are determined by the type the programmer gave to the value. Therefore, we should try to reason primarily about values and not about representations if we want to write portable code.

Specifying values. We have already seen several ways in which numerical constants (literals) can be specified:

123 Decimal integer constant.
077 Octal integer constant.
0xFFFF Hexadecimal integer constant.
et cetera

问题:十进制整数常量和十六进制整数常量是“表示”值的不同方式还是它们本身就是值?如果是后者,在不同的架构上用什么不同的方式来表示它们?

上述内容的来源是 Jens Gustedt 的书“Modern C”,即 freely available online ,特别是从页号。第 38 页46.

最佳答案

这里可以在两种不同的上下文中使用“表示”一词。

一个是当我们(程序员)指定例如整型常量。例如,值 37 在 C 代码中可以表示为 370x25045。无论我们选择了哪种表示形式,C 编译器在生成二进制代码时都会将其解释为相同的值。因此,这些语句都生成相同的代码:

  int a = 37;
int a = 0x25;
int a = 045;

另一个上下文是编译器如何选择在内部存储值 37。 C 标准规定了一些要求(例如,int 的表示必须至少能够表示 -32767+32767 范围内的值>).在 C 标准的规则中,编译器将使用一种位表示法,目标系统 CPU 的 native 语言可以有效地对其进行操作。有符号整数最常见的表示形式是 Two's complement通常 int 类型的有符号整数将占用 2 或 4 个字节,每个字节为 8 位。

但是,C 标准足够灵活以允许其他内部表示(例如,超过 8 位的字节或 Ones' complement 有符号整数的表示)。不同系统上多字节整数表示之间的一个常见差异是使用不同的 byte order。 .

C 标准主要关注标准操作的结果。例如。 5+6 必须给出相同的结果,无论表达式在哪个平台上执行,但是 5611 在给定平台上的表示主要由编译器决定。

关于c - 以下在编程上下文中是什么意思,特别是 C 编程语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70076720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com