问题标签 [kr-c]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2596 浏览

c - 关于 C 的 K&R 书中示例 1.5.2 的问题

我正在用 K&R 自学 C,并被书中的一个例子难住了。我完全按照示例中编写的方式编译代码,但它并没有按照作者所说的那样进行。该程序应该计算字符。给出的代码如下:

为了编译,我将 main() 替换为 int main()。但我认为这与问题无关。该程序编译并运行良好。但它根本不计算字符,因为它是写的。我错过了什么吗?自从本书编写以来,现代编译器处理此类代码示例的方式是否发生了变化?此留言板上的好人可能能够提供的任何帮助将不胜感激。

最好的,丹

0 投票
2 回答
2234 浏览

c - K&R 中的练习 1-24 - 基本语法检查

练习内容为“编写一个程序来检查 C 程序中的基本语法错误,例如不平衡的括号、方括号和大括号。不要忘记单引号和双引号、转义序列和注释。”

我选择通过将括号、方括号和大括号放在堆栈上来解决问题,并确保所有内容都是 LIFO 以及用于标记我们是否在评论、引用等中的各种计数器。

问题是我觉得我的代码虽然有效,但结构很差,而且不是特别惯用。我尝试在结构中实现状态变量(堆栈、escapedinString等)并将测试分解为子例程。它没有多大帮助。有没有办法以更清洁的方式解决这个问题,同时仍然正确处理转义字符等?

0 投票
3 回答
2438 浏览

c - 如何将 K&R 函数声明自动转换为 ANSI 函数声明?

如您所见,在 K&R 风格中,变量的类型是在新行中声明的,而不是在大括号中。如何将 K&R 函数声明自动转换为 ANSI 函数声明?有人知道 Linux 中这么容易使用的工具吗?

0 投票
3 回答
8032 浏览

c - UINT_MAX 与 C 中的 ULONG_MAX 相同

在解决 K&R C 书中的练习时,我偶然发现了练习 2.1。

起初我得到 as UINT_MAX-1但后来我使用了%u占位符,但现在它给了我与 相同的数字ULONG_MAX

在附录 B 的书中,他们说UINT_MAX应该是65535ULONG_MAX应该是4294967295,但是在运行练习时,它给了我两个UINT_MAXULONG_MAXas 4294967295

这是为什么?

0 投票
1 回答
680 浏览

c++ - 至少内部名称的前 31 或 63 个字符有意义?

这是书中的直接引述(K&R,第 2 版,第 35 页):

“至少内部名称的前 31 个字符是重要的。对于函数名称和外部变量,该数字可能小于 31,因为外部名称可能被语言无法控制的汇编程序和加载程序使用。对于外部名称, 标准只保证 6 个字符和一个大小写。”

并且在 C99 中对其内部名称没有长度限制,但只有前 63 个保证是重要的(第 5.2.4.1 节翻译限制)。

我的问题是为什么这些限制特别是3163?为什么是这个数字?为什么不是19、24或任何其他数字?如果这是一个实施问题,将其设为 3163是否有好处?

0 投票
1 回答
739 浏览

c++ - c99:内部名称的 63 个字符有意义吗?

可能重复:
内部名称的至少前 31 或 63 个字符有意义?

这是书中的直接引述(K&R,第 2 版,第 35 页):

“至少内部名称的前 31 个字符是重要的。对于函数名称和外部变量,该数字可能小于 31,因为外部名称可能被语言无法控制的汇编程序和加载程序使用。对于外部名称, 标准只保证 6 个字符和一个大小写。”

并且在c99 中对其内部名称没有长度限制,但只有前 63 个是有意义的。

我的问题是为什么这些限制特别是3163?为什么这个数字特别为什么不是19,24或任何其他数字?如果这是一个实施问题,将其设为 3163是否有好处?

0 投票
3 回答
9727 浏览

c - unix 读写功能

当我输入“∂∑∑®†¥¥¥˚πΔ~~∫∫√ç tu 886661~EOF”作为输入时,它会被复制。有多少非 ASCII 字符同时存储?

BUFSIZ 是要传输的字节数。如果对于任何值,任何内容都可以从输入复制到输出,BUFSIZ 如何限制字节传输?

char buf[BUFSIZ] 如何存储非 ASCII 字符?

0 投票
3 回答
588 浏览

c - K 和 R 练习 1-24

我正在用 Kernighan 和 Ritchie 编写的 C 编程语言编写程序。

我目前正在练习 1-24,它说:

编写一个程序来检查 C 程序中的基本语法错误,例如不平衡的括号、方括号和大括号。不要忘记引号,单引号和双引号,escape sequences以及注释。

我做得很好......但我不知道escape sequences这些括号,括号和大括号会如何影响?

为什么他们警告转义序列?

0 投票
1 回答
201 浏览

c - 这个奇怪的 C++ 定义是什么意思?

我的作业代码中有这个奇怪的函数定义,我真的不知道它应该是什么意思。

尤其是“char *string;” 行,最后的分号是什么。

0 投票
1 回答
145 浏览

c - putchar(c) 在这里 '_' 的值是多少?

putchar(c) 外循环的值是多少?

当我运行程序时,说“th”(wtq)并在cmd(Windows)中按回车:

注意前面的空格printf c_outloop 0。是putchar(c)空间的价值吗?