答题规则:任选几门语言在评论区说出你在空行处的答案
已有答案仅供参考,导致写了空行处的答案
一、Python 3
谁还搞 Python 2 啊
print(n == n)
输出 False
解法一:运算符重载
class _:
def __eq__(self, other):
return false
n = _();
解法二:nan
写法一
n = float('nan')
# 可以把两个 ' 都写成 "
# nan 可以写成 naN nAn nAN Nan NaN NAn NAN
写法二
import math # import-as 也可以
n = math.nan
# 也可以 from math import * 或把 * 写成 nan 然后 n = nan
二、C
#include <stdio.h>
int main()
{
printf("%d\n", (int)(n == n));
return 0;
}
输出 0
解法一:nan
double n = 0.0 / 0.0;
/* 或
#include <math.h>
double n = nan;
*/
解法二:rand()
#define n rand()
这时就有人要说了,万一两次 rand()
的结果一样呢?
注意我们没写 srand
,此时 rand()
是伪随机,当然不一样啦!
解法三:
#define n 0 && 1
这时有人就又要说了,0 && 1
是 0
,0 && 1
也是 0
,怎么能说 0 && 1 == 0 && 1
这是因为,编译器按照优先级会解释成 0 && (1 == 0) && 1
三、C++
#include <iostream>
int main()
{
std::cout << std::boolalpha << (n == n) << std::endl;
return 0;
}
输出 false
解法一至三:同写法二解法一至三
解法四:运算符重载
bool operator=(int, int)
{
return false;
}
int n;
或
struct _
{
bool operator==(_)
{
return false;
}
} n;