看完这个问题后:
可以(a == 1 && a == 2 && a == 3)评估为真吗?
我试图覆盖getter以在C#中重现所需的行为.
使用此代码,我获得了我想要做的事情:
private static int myProperty;
public static int MyProperty
{
get { myProperty++; return myProperty; }
set { myProperty = value; }
}
static void Main(string[] args)
{
if (MyProperty == 1 && MyProperty == 2 && MyProperty == 3)
{
Console.WriteLine("yohhooo");
}
}
Run Code Online (Sandbox Code Playgroud)
但是由于我的第一次尝试,我提出了这个问题:
public static int MyProperty
{
get { MyProperty++; return MyProperty; }
set { MyProperty = value; }
}
static void Main(string[] args) …Run Code Online (Sandbox Code Playgroud) 以下简单程序的行为异常。有时它打印“ 0.00000”,有时它打印的“ 0”超出我的计算。有时,它会耗尽系统上的所有内存,然后系统要么终止某些进程,要么由于bad_alloc失败。
#include "stdio.h"
int main() {
fprintf(stdout, "%.*f", 0.0);
}
Run Code Online (Sandbox Code Playgroud)
我知道这是fprintf的不正确用法。应该有另一个参数指定格式的宽度。令人惊讶的是,这种行为是不可预测的。有时似乎使用默认宽度,而有时却非常严重。难道这不能总是失败或总是使用某些默认行为吗?
我在工作中的一些代码中遇到了类似的用法,并花了很多时间弄清楚发生了什么。它似乎仅在调试版本中发生,而在使用gdb进行调试时则不会发生。另一个好奇之处是,通过valgrind运行它会始终导致打印很多“ 0”的情况,否则这种情况很少发生,但是也不会发生内存使用问题。
我正在运行Red Hat Enterprise Linux 7,并使用gcc 4.8.5进行了编译。
受到另一个关于java脚本语言的问题的启发.可以表达
(a==1)&&(a==2)&&(a==3)
Run Code Online (Sandbox Code Playgroud)
在C++中评估为true?(如果是的话,它真的有用吗?)
我们知道它可以用Java和JavaScript.
但问题是,可以在下面的条件永远评估为true 在C或C++?
if(a==1 && a==2 && a==3)
printf("SUCCESS");
Run Code Online (Sandbox Code Playgroud)
编辑
如果a是整数.
我知道这是一个有线问题,但我想让这个语法在 javascript 中工作:
var a = (5).plus(3).minus(6); //2
Run Code Online (Sandbox Code Playgroud)
灵感来自:http://dmitry.baranovskiy.com/post/31797647
我已经检查了SO 的答案.,但对语法中的点()没有任何想法。
实际上,这个问题是Can (a== 1 && a ==2 && a==3) ever评估为真的扩展?.
我们可能知道,松散相等运算符 (==)的秘密将尝试将两个值转换为公共类型。因此,将调用一些函数。
ToPrimitive(A)通过调用 A 上的不同序列A.toString和A.valueOf方法,尝试将其对象参数转换为原始值。
所以下面的代码将按预期工作。
const a = {
i: 1,
toString: function () {
return a.i++;
}
}
if(a == 1 && a == 2 && a == 3) {
console.log('Hello World!');
}Run Code Online (Sandbox Code Playgroud)
但是, 的情况下的问题strict equality (===)。方法如.valueOf,.toString或Symbol.toPrimitive不会被JavaScript引擎调用。
我该如何解决?任何帮助,将不胜感激。
const a = {
i: 1,
toString: function () {
return a.i++;
}
} …Run Code Online (Sandbox Code Playgroud)这个问题类似于这里它的目的是为JavaScript,还催生了无数关闭分拆为各种不同的语言.我很好奇以下是否可以在PHP中评估为true:
($a == 1 && $a == 2 && $a == 3)
Run Code Online (Sandbox Code Playgroud)
为了进一步跟进,似乎简单的设置$a = true将产生所需的结果(这不是javascript的情况,因为类型转换在两种语言中的工作方式).一些答案(在javascript中)也可以使用===,所以在使用typechecking(===)的PHP中,以下内容是否会产生真实效果?
($a === 1 && $a === 2 && $a === 3)
Run Code Online (Sandbox Code Playgroud) 就像这里的一些问题一样,(a == 1 && a == 2 && a == 3)已经证明它可以在javascript中被评估为true而我只是想知道PL/SQL中是否还有一种方法评估它也是真的.
c++ ×3
c ×2
javascript ×2
c# ×1
compare ×1
ecmascript-6 ×1
memory-leaks ×1
oracle11g ×1
php ×1
plsql ×1
printf ×1