问题标签 [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.
c - 关于 C 的 K&R 书中示例 1.5.2 的问题
我正在用 K&R 自学 C,并被书中的一个例子难住了。我完全按照示例中编写的方式编译代码,但它并没有按照作者所说的那样进行。该程序应该计算字符。给出的代码如下:
为了编译,我将 main() 替换为 int main()。但我认为这与问题无关。该程序编译并运行良好。但它根本不计算字符,因为它是写的。我错过了什么吗?自从本书编写以来,现代编译器处理此类代码示例的方式是否发生了变化?此留言板上的好人可能能够提供的任何帮助将不胜感激。
最好的,丹
c - K&R 中的练习 1-24 - 基本语法检查
练习内容为“编写一个程序来检查 C 程序中的基本语法错误,例如不平衡的括号、方括号和大括号。不要忘记单引号和双引号、转义序列和注释。”
我选择通过将括号、方括号和大括号放在堆栈上来解决问题,并确保所有内容都是 LIFO 以及用于标记我们是否在评论、引用等中的各种计数器。
问题是我觉得我的代码虽然有效,但结构很差,而且不是特别惯用。我尝试在结构中实现状态变量(堆栈、escaped
、inString
等)并将测试分解为子例程。它没有多大帮助。有没有办法以更清洁的方式解决这个问题,同时仍然正确处理转义字符等?
c - 如何将 K&R 函数声明自动转换为 ANSI 函数声明?
如您所见,在 K&R 风格中,变量的类型是在新行中声明的,而不是在大括号中。如何将 K&R 函数声明自动转换为 ANSI 函数声明?有人知道 Linux 中这么容易使用的工具吗?
c - UINT_MAX 与 C 中的 ULONG_MAX 相同
在解决 K&R C 书中的练习时,我偶然发现了练习 2.1。
起初我得到 as UINT_MAX
,-1
但后来我使用了%u
占位符,但现在它给了我与 相同的数字ULONG_MAX
。
在附录 B 的书中,他们说UINT_MAX
应该是65535
和ULONG_MAX
应该是4294967295
,但是在运行练习时,它给了我两个UINT_MAX
和ULONG_MAX
as 4294967295
。
这是为什么?
c++ - 至少内部名称的前 31 或 63 个字符有意义?
这是书中的直接引述(K&R,第 2 版,第 35 页):
“至少内部名称的前 31 个字符是重要的。对于函数名称和外部变量,该数字可能小于 31,因为外部名称可能被语言无法控制的汇编程序和加载程序使用。对于外部名称, 标准只保证 6 个字符和一个大小写。”
并且在 C99 中对其内部名称没有长度限制,但只有前 63 个保证是重要的(第 5.2.4.1 节翻译限制)。
我的问题是为什么这些限制特别是31或63?为什么是这个数字?为什么不是19、24或任何其他数字?如果这是一个实施问题,将其设为 31或63是否有好处?
c++ - c99:内部名称的 63 个字符有意义吗?
可能重复:
内部名称的至少前 31 或 63 个字符有意义?
这是书中的直接引述(K&R,第 2 版,第 35 页):
“至少内部名称的前 31 个字符是重要的。对于函数名称和外部变量,该数字可能小于 31,因为外部名称可能被语言无法控制的汇编程序和加载程序使用。对于外部名称, 标准只保证 6 个字符和一个大小写。”
并且在c99 中对其内部名称没有长度限制,但只有前 63 个是有意义的。
我的问题是为什么这些限制特别是31或63?为什么这个数字特别为什么不是19,24或任何其他数字?如果这是一个实施问题,将其设为 31或63是否有好处?
c - unix 读写功能
当我输入“∂∑∑®†¥¥¥˚πΔ~~∫∫√ç tu 886661~EOF”作为输入时,它会被复制。有多少非 ASCII 字符同时存储?
BUFSIZ 是要传输的字节数。如果对于任何值,任何内容都可以从输入复制到输出,BUFSIZ 如何限制字节传输?
char buf[BUFSIZ] 如何存储非 ASCII 字符?
c - K 和 R 练习 1-24
我正在用 Kernighan 和 Ritchie 编写的 C 编程语言编写程序。
我目前正在练习 1-24,它说:
编写一个程序来检查 C 程序中的基本语法错误,例如不平衡的括号、方括号和大括号。不要忘记引号,单引号和双引号,
escape sequences
以及注释。
我做得很好......但我不知道escape sequences
这些括号,括号和大括号会如何影响?
为什么他们警告转义序列?
c - 这个奇怪的 C++ 定义是什么意思?
我的作业代码中有这个奇怪的函数定义,我真的不知道它应该是什么意思。
尤其是“char *string;” 行,最后的分号是什么。
c - putchar(c) 在这里 '_' 的值是多少?
putchar(c) 外循环的值是多少?
当我运行程序时,说“th”(wtq)并在cmd(Windows)中按回车:
注意前面的空格printf c_outloop 0
。是putchar(c)
空间的价值吗?