|
|
1
3
循环可以用递归替换。
|
|
|
2
1
你提出了一个有趣的问题:在类C编程中,“布尔”是什么? 在我看来,答案是布尔值(实际上是布尔操作)是C中的隐式控制结构。 它来自“短路”规则-当“左”为假或“左”为真时,完全不计算“右”。除了条件跳转之外,没有其他方法可以实现这一点——任何按位或和都是不够的。另外,考虑比较:A>B被转换为比较,并有条件地跳到大多数现代处理器上。它不是“A>B时在寄存器中存储1”。 您所发现的是,我们在逻辑操作和比较中使用隐式控制结构,而不是显式的“if”结构。有些语言将其进一步扩展了一个层次-考虑一下Perl中的这个标准习语:
|
|
|
3
0
这与控制结构无关。你把箱子放在哪里
可以重写为
这种过度的结构之所以产生,是因为有时将其写为结构更容易,但不尝试生成单个表达式。这是由于程序员的懒惰和缺乏思考。这里是例子。您需要计算递增数字的和。首先想到的是什么?正确的:
现在试着找到一个表达式如何计算这个数。这不太明显。 |
|
|
4
0
|
|
|
5
0
在某些情况下,您可以将所有逻辑放入“for loop语句”的第三个参数中,并创建一个看起来是空的但执行某些操作的循环(我不是说这是一种好的样式)。例如,
|
|
|
6
0
也可以用布尔表达式替换:
是同一件事
和
等于
所以你可以替换
通过
但为什么会有人想这样做是一个完全不同的问题。我的同事喜欢这样的东西,因为他认为这会使他的程序更简单。 |
|
|
7
0
做事情的方式总是很简单。在Smalltalk中,一切都是一个对象,包括代码块。没有条件命令结构。 Boolean类有两个子类,true和false(每个子类有一个对象,分别为true和false)。条件是用两个参数发送给布尔对象的方法,一个是then代码块,另一个是else代码块。真对象执行then分支,假对象执行else分支。 虽然循环是相似的,但是for循环是传递给integer对象的消息… 我觉得挺干净的。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |