小编Fil*_*inx的帖子

是否有可能区分0和-0?

我知道整数值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吗?

c++ int zero negative-number

92
推荐指数
6
解决办法
7397
查看次数

插值字符串格式问题

我现在多次偶然发现插值字符串的一个问题.

考虑以下情况:

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)

.net c# c#-6.0

9
推荐指数
1
解决办法
379
查看次数

查找具有最大属性值的对象的键

我有这样的字典词典.

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在我的情况下是否可以使用该功能?

python dictionary

5
推荐指数
3
解决办法
139
查看次数

C#7:为什么元组解构没有通过接口实现?

在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)

当然,必须有更多具有不同数量参数的接口.

这个设计选择有没有明显的原因,我错过了?

.net c#-7.0

5
推荐指数
1
解决办法
425
查看次数

为什么你可以在C++ char中加入多个字符*

我无法弄清楚它是如何工作的.

// This doesn't work (obviously)
char a;
a = "aaa";

// This works
char* a;
a = "aaa";
Run Code Online (Sandbox Code Playgroud)

怎么运作?

由于char类型只存储一个字符或1个字节的数字,当您通过指针访问它时,如何在其中存储更多字符?

c++ string pointers char

4
推荐指数
1
解决办法
4920
查看次数

函数定义中的四倍"const"

我想知道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选项编译.

我投票结束这个问题.

c++ const language-lawyer

3
推荐指数
1
解决办法
293
查看次数

标签 统计

c++ ×3

.net ×2

c# ×1

c#-6.0 ×1

c#-7.0 ×1

char ×1

const ×1

dictionary ×1

int ×1

language-lawyer ×1

negative-number ×1

pointers ×1

python ×1

string ×1

zero ×1