0

在我的编程课上,我们不允许使用 || && 和 !对于这个任务。如果不使用!,你怎么能做一个“不”的声明?另外,如何做 && 会很有用,但我想我可以弄清楚。

(我们可以使用 % / * pow abs ln + -)

4

8 回答 8

1
  • 如果不使用!,你怎么能做一个“不”的声明?另外,如何做 && 会很有用,但我想我可以弄清楚。

回答确切的问题:使用标准宏notand。只是不要忘记#include <iso646.h>

于 2013-09-29T01:18:21.347 回答
1

!a等价于1-a,前提a是保证只取值 0 或 1。

于 2013-09-29T00:10:20.320 回答
1
if (!x) { }

是相同的

if (x==0) { }
于 2013-09-29T00:20:29.340 回答
1

(!x) 等价于 (x?0:1) 或 (x==0)

于 2013-09-29T00:24:58.507 回答
0

超级简单的方法,

If(x == y) {
    //Don't do something 
 } 
 Else{
     //do something
 } 
于 2013-09-29T01:25:56.713 回答
0

视情况而定,例如:

if(a != b){
   //do stuff
}

可以改写为:

if(a == b){} else {
  //do stuff
}
于 2013-09-29T00:11:08.210 回答
0

怎么样

1-(abs(abs(a+1) - abs(a-1))/2)

解释:

int not(int a){
    int b = abs(a+1) - abs(a-1);
    //b is either -2, 0 or 2 depending on whether a was <0, ==0 or >0.
    int c = abs(b) / 2;
    //c is either 0 or 1 depending on whether b was zero or non-zero
    return 1-c;
    //return 1 if a is 0 or 0 if a is 1
}
于 2013-09-29T00:47:22.380 回答
0

!(variable % 4)可以写成"\1\0\0"[abs(variable%4)]

对于变量的任何整数值,变量 % 4 只能产生整数值 {-3, -2, -1, 0, 1, 2, 3}。

由于只有 7 个可能的值,我们可以使用结果查找表。

的结果 !这些值是:

  • -3 -> 0
  • -2 -> 0
  • -1 -> 0
  • 0 -> 1
  • 1 -> 0
  • 2 -> 0
  • 3 -> 0

为了避免不得不处理负索引,我们将abs结果,所以我们只看到0-3。

表示此查找表的一种简单方法是使用文字字符串:“\1\0\0”。我们对值使用八进制转义序列。0 处的值是 1,1 处的值是 0,等等。C 字符串有一个隐含的 0 (NUL) 作为最终字符,并且由于我们需要的最后一个值是 0,所以我没有明确包含它。

如果不能使用方括号,也可以这样写:*("\1\0\0" + abs(variable%4))

于 2013-09-29T04:21:04.187 回答