|
|
1
15
没有这样的值:值的计算结果为
这是可行的,但这并不取决于
|
|
|
2
24
仅在这种情况下(在类Unix系统上):
在这种情况下,两个分支总是同时调用(好吧,或多或少是同时调用),但在不同的过程中。
这是:
是错误的构造。你需要用这样的方法来代替:
如果总是调用一个分支,那么就不需要“else”。 |
|
|
3
4
如果你不介意一些未定义的行为,你可以在C++中这样做:
这对GCC和Clang很好。它通过呼叫
编译器可以自由复制
因此程序打印
|
|
|
4
2
在递归函数中,两个分支都可以执行:
用调用它
将执行if分支,后跟else分支 |
|
5
2
首先,这不是一个愚蠢的问题。) 为了理解为什么您不能用任何特殊的技巧来完成这一点,我们需要逐步使用由if语句生成的程序集(尤其是使用gcc 4.2.1的Intel处理器的程序集——不同的体系结构将导致不同的程序集)。 以这个简单的C程序为例:
如果用户输入非零整数,则返回100;否则返回3。实际情况在这里并不重要,因为我们只对为生成的程序集感兴趣
我假设您不知道组装——但别担心,这个例子并不难跟上。这里发生的是我们
接下来,有一个
然而,如果
在这里生成程序集后,实际上只有两个可能的分支。您不能随意重新排序代码。
那么,是否可以执行两个分支(当它们不同时执行时)
|
|
|
6
0
没有诡计,不,这是不可能的。考虑该表达式的含义:
这表示要执行
|
|
|
7
0
您可以使用整数作为测试变量,并使用>、<、>=、<=、<=、,检查其值。==
在本例中,两个语句都只在x为0时执行。否则就只有一个了。 |
|
|
8
0
如果这是一个技巧问题,你可以回答
使用gcc语句表达式:)对于表达式语句,有逗号运算符
这是一个 quite popular question . |
|
9
0
没有
单一的
价值观
然而。。。
在C(和C++)中,可以使用
最初的呼叫
在实践中,它类似于写作
尽管语义不同。 你可能会用C++做一些类似的丑陋的事情,但是我没有足够的C++专家来确定。 |
|
|
10
0
对于单语句情况,只执行其中一个语句,而不是同时执行这两个语句。这是对
然而
,如果是
例子:
在上面的示例中,编译器可以生成代码,以便在条件为
编译器正在重写代码:
当编译器在两个条件的语句块末尾附近看到重复语句时,可能会发生这种情况。 |
|
|
11
0
或者更简单
|
|
12
0
您可以使用:
输出:
|
|
|
13
-1
下面是一个简单的例子:
印刷品
不是
|