问题标签 [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 投票
3 回答
1583 浏览

c - 我不明白 K&R 书中的 itoa()

我在读 K&R; 到目前为止,我做得很好,但是功能itoa()中有一些我不明白的东西。他们在这里itoa()说他们自己颠倒了数字。例如 10 是 01 (他们反转字符串):

我不明白它是如何颠倒数字的。即使我们只是在做n % 10 + '0'它的下一个数字,10 然后 1 被删除然后它变成 0 对吗?还是我不明白它的逻辑?

0 投票
2 回答
1238 浏览

c - 如何从 K&R C 转换为 ANSI C?

我正在尝试执行以下代码,这是 1988 年 Obfuscated C Code Contest 的参赛作品。

根据条目描述,此代码通过查看其自身区域来计算 pi。我在不更改代码的情况下成功编译了它。但是当我执行时,它给了我一个 0.25 的值,我期望的是 3.14。代码描述说它在 K&R C 中,如果没有一些更改,它在 ANSI C 中不能正常工作。我想我必须做这些修改才能正确执行它。我以前没有任何使用 K&R C 的经验。所以有人可以帮我将上面的代码更改为 ANSI C 或指出问题所在。我正在使用 Microsoft Visual Studio 2008 来执行此操作。

0 投票
4 回答
7827 浏览

c - 在 ANSI C 中正确声明 main() 函数

C标准说:

程序启动时调用的函数名为 main。实现没有声明这个函数的原型。它应定义为返回类型为 int 且不带参数:

或者带有两个参数(这里称为 argc 和 argv,尽管可以使用任何名称,因为它们是声明它们的函数的局部变量):

或等效的或以某种其他实现定义的方式。

然而,Kernighan & Ritchie 在他们的第二版(规范的 ANSI C)圣经中只使用:

谁是对的?它是否与没有返回值的函数有关,自动假设int在 C 中返回?

0 投票
10 回答
5761 浏览

c - 计算机中的数据类型究竟是如何表示的?

我是一个阅读 K&R 的初级程序员,我觉得这本书好像假设了很多以前的知识。让我感到困惑的一个方面是内存中变量的实际表示,或者我应该说存在。数据类型究竟为变量指定了什么?我不太清楚如何表达这个问题......但我会问几个问题,也许有人可以为我想出一个连贯的答案。

使用 getchar() 时,有人告诉我使用“int”类型比使用“char”类型更好,因为“int”可以保存更多值,而“char”只能保存 256 个值。由于我们可能需要变量来保存 EOF 值,因此我们需要超过 256 个,否则 EOF 值将与 256 个字符之一重叠。在我看来,我认为这是一堆空洞的盒子。有人可以给我一个更好的代表吗?这些“盒子”有索引号吗?当 EOF 与 256 个可用值中的一个值重叠时,我们能否预测它将与哪个值重叠?

另外,这是否意味着数据类型“char”只有在我们简单地手动为变量赋值时才可以使用,例如 char c = 'a',当我们明确知道我们将只有 256 个可能的 ASCII人物?

另外,“char”和“int”之间的实际重要区别是什么?如果我们可以使用“int”类型而不是“char”类型,为什么我们决定在某些时候使用一种而不是另一种呢?是为了节省“内存”(我使用引号,因为我实际上并不知道“内存”是如何工作的)。

最后,这 256 个 char 类型的可用值究竟是如何获得的?我读了一些关于模 2^n 的东西,其中 n = 8,但为什么它会起作用(与二进制有关?)。“模2 ^ n”的模部分是什么意思(如果它与模算术有任何关系,我看不到关系......)?

0 投票
3 回答
1784 浏览

c - k&r 与位操作混淆

练习是:编写一个函数 setbits(x,p,n,y) 返回 x,其中从位置 p 开始的 n 位设置为 y 的最右边 n 位,其他位保持不变。

我对解决方案的尝试是:

这可能是不正确的,但我在正确的道路上吗?如果没有,我做错了什么?我不确定为什么我不完全理解这一点,但我花了大约一个小时试图想出这个。

谢谢。

0 投票
1 回答
1023 浏览

c - 使用 xcode 学习 C(通过 K&R)

我正在使用C 编程语言(K&R)学习 C。

因为我不想在文本编辑器和运行 gcc 之间来回切换,所以我决定使用 xcode 作为 IDE。到目前为止,在 1.5.2 节之前,我已经能够毫无问题地遵循本书的示例。

当给出有效的 (?) 程序时...

...我没有收到最终输出,告诉我输入中有多少个字符。我正在通过 xcode 控制台窗口输入我的输入。

经过一些调试,我的程序似乎陷入了 while 循环,并且从未遇到 EOF 令牌。为了适应这一点,我将换行符替换为新条件,通过替换EOFwith "\n",它也什么都不做,并给我一个 int 指针比较警告。

我在这里做错了什么?

我可以使用 xcode 关注 K&R 吗?

0 投票
1 回答
275 浏览

c - 混合数据类型导致心脏输出

我在玩 K&R 中的一个示例程序,发现这

产生的输出是 3.000000(这是我完全预料到的),然后是一条带有心脏的新线(我完全没想到)。为什么它会输出一个带有心脏的新行?我认为这与我混合数据类型有关。

0 投票
8 回答
3304 浏览

c - K&R 练习 1-21 - 心理不理解

“不可能”的 K&R 练习。

“编写一个程序entab,用最少数量的制表符和空格替换空格字符串以实现相同的间距。使用相同的制表位,例如每n列。n应该是变量还是符号参数?”

我遇到的问题是,我不确定如何正确地做到这一点。我知道这不是很容易解释,但这几乎是这里的问题。我见过的大多数示例都计算了一些空白,并用选项卡替换了这些系列,但这不是它的要求,我想我理解它的要求,但目前感觉无法做到这一点。

谁能帮忙:)

编辑:到目前为止我写的代码可以在这里找到

0 投票
3 回答
40255 浏览

c - 函数声明:K&R vs ANSI

K&R 函数声明和 ANSI 函数声明有什么区别?

0 投票
3 回答
3142 浏览

c - 自“C 编程语言”以来发生了什么变化

我在 C 方面的经验主要来自《The C Programming language》的第二版,这是一本非常古老的书。自发布以来,C 语言发生了哪些变化,我应该避免哪些过时或弃用的函数?