(int) + 4*5;
Run Code Online (Sandbox Code Playgroud)
为什么这样做(添加带有值的类型)是可能的?(尝试使用g ++和gcc。)
我知道这没有任何意义(也没有影响),但是我想知道为什么这是可能的。
我的程序中有一个奇怪的错误,经过几个小时的调试后,我发现了以下非常愚蠢的行:
int a = b * (c * d * + e)
Run Code Online (Sandbox Code Playgroud)
如果你没有看到它:在d和e我之间写的* +,只是一个+意图.
为什么这会编译,它实际上意味着什么?
一般来说,一元+人在Python中应该怎么做?
我问,因为到目前为止,我从未见过这样的情况:
+obj != obj
Run Code Online (Sandbox Code Playgroud)
obj通用对象在哪里实现__pos__().
所以我想知道:为什么+和__pos__()存在?你能提供一个真实世界的例子,其中上面的表达式评估为True?
对于这个C#a==true,:
bool a = "hello" + '/' + "world" == "hello/world";
Run Code Online (Sandbox Code Playgroud)
对于这个C#b==true,:
bool b = "hello" + + '/' + "world" == "hello47world";
Run Code Online (Sandbox Code Playgroud)
我想知道这是怎么回事,更重要的是,为什么C#语言架构师会选择这种行为?
Java的一元加运算符似乎来自C,通过C++.
int result = +1;
Run Code Online (Sandbox Code Playgroud)
它似乎有以下影响:
int如果它不是已经int或更宽,则提升其操作数在我看来,有更好/更清晰的方法来做所有这些事情.
在这个SO问题中,关于C#中的对应运算符,有人说"如果你觉得有必要,它就会超载".
但是,在Java中,不能超载任何运算符.那么这个一元加运算符是否只存在于Java中,因为它存在于C++中?
前几天在我的白皮书中巡航时,我在C关键字列表中注意到了. entry是该列表中的关键字之一.
它留作将来使用.回想一下我的Fortran时代,有一种类型的函数使用entry语句来创建第二个参数签名,或者进入函数的入口点.
这是最初打算用于什么条目?或者完全不同的东西?
关于entry关键字的故事是什么?
有些语言使用一元加运算符进行隐式转换,例如将字符串强制转换为数字(例如Javascript)或将小数字类型转换为int(例如大多数基于C的语言),或者在重载运算符时使用.
由于一元加号主要用于这样的hackish目的,而且由于F#不执行自动扩展转换,我很惊讶F#包括一元加号.
令我惊讶的是,Haskell没有一元加运算符.由于F#设计受到Haskell的影响,我很好奇为什么当Haskell显然不支持F#需要一元加时.
你能举例说明F#中一元加的可靠用法吗?如果你不能,为什么它包含在语言中呢?
标题是大多数问题,是什么允许这是有效的代码?是否有任何好处或技巧可以让我利用它?