我知道整数值0
和-0
基本相同.但是,我想知道是否有可能区分它们.
例如,我如何知道是否分配了变量-0
?
bool IsNegative(int num)
{
// How ?
}
int num = -0;
int additinon = 5;
num += (IsNegative(num)) ? -addition : addition;
Run Code Online (Sandbox Code Playgroud)
-0
保存在内存中的值与完全相同0
吗?
我现在多次偶然发现插值字符串的一个问题.
考虑以下情况:
double number = 123.4567;
var str = $"{{{number:F2}}}"; //I want to get "{123.45}"
Console.WriteLine(str); // Will print "{F2}"
Run Code Online (Sandbox Code Playgroud)
一开始有点令人惊讶但是一旦你意识到花括号是如何配对的,这是有道理的.以下两个花括号是插值字符串中单个卷曲的转义序列.因此插值表达式的左括号与字符串中的最后一个卷曲配对.
___pair____
| |
$"{{{number:F2}}}";
Run Code Online (Sandbox Code Playgroud)
现在,您可以执行以下操作来中断转义序列:
var str = $"{{{number:F2} }}"; // This will be "{123.45 }"
Run Code Online (Sandbox Code Playgroud)
请注意此方法添加到输出的空格字符.(不理想)
我的问题:
假设我想使用单个插值字符串来准确输出"{123.45}"
这样做是否可能不做如下的hackish?
var s = $"{{{number:F2}{'}'}";
Run Code Online (Sandbox Code Playgroud) 我有这样的字典词典.
d = {
'a' : {'c' : 1, 'h' : 2},
'b' : {'c' : 3, 'h' : 5},
'c' : {'c' : 2, 'h' : 1},
'd' : {'c' : 4, 'h' : 1}
}
Run Code Online (Sandbox Code Playgroud)
我需要得到具有最高价值的物品的钥匙c + h
.
我知道你可以获得具有最高价值的物品的钥匙,如下所示:
d = { 'a' : 1, 'b' : 2, 'c' : 3 }
max( d, key = d.get ) # 'c'
Run Code Online (Sandbox Code Playgroud)
max
在我的情况下是否可以使用该功能?
在C#7中,我们可以实现一个Deconstruct
方法,该方法在将对象分配给具有匹配类型的元组时将被调用.
我想知道为什么微软决定将其作为一种"魔术方法"来实现.有一个特定命名的方法不是从任何地方继承的,如果你正确命名并放入正确的参数,那么你将能够将这个对象分配给相应的元组.
我想,设计团队会为此创建一个界面.
就像是:
public interface IDecontructible<T1>
{
void Deconstruct(out T1 a);
}
public interface IDecontructible<T1, T2>
{
void Deconstruct(out T1 a, out T2 b);
}
public interface IDecontructible<T1, ... ,Tn>
{
void Deconstruct(out T1 a, ... ,out Tn n);
}
Run Code Online (Sandbox Code Playgroud)
当然,必须有更多具有不同数量参数的接口.
这个设计选择有没有明显的原因,我错过了?
我无法弄清楚它是如何工作的.
// This doesn't work (obviously)
char a;
a = "aaa";
// This works
char* a;
a = "aaa";
Run Code Online (Sandbox Code Playgroud)
怎么运作?
由于char
类型只存储一个字符或1个字节的数字,当您通过指针访问它时,如何在其中存储更多字符?
我想知道C++如何使用它的const关键字.
我有以下功能定义.单独看起来很疯狂,但工作得很好.
const int const * const Get(){ return new int(1); } const
Run Code Online (Sandbox Code Playgroud)
我知道const的每个位置意味着什么,这个问题不是关于const关键字的位置的意义.
我对使用const关键字感到困惑,因为你可以复制它们.
const int const const * const Get(){ return new int(1); } const
// or even
const const int const const * const const Get(){ return new int(1); } const const
// or even yet
const const const int const const const * const const const Get(){ return new int(1); } const const const
Run Code Online (Sandbox Code Playgroud)
为什么语言允许你这样做?
编辑:此代码可以在Visual Studio 2013,Visual C++编译器中编译.我不确定编译器的实际名称.
编辑2:所以答案是这是违反标准的.该代码仅使用/Za
选项编译.
我投票结束这个问题.