小编Tob*_*ght的帖子

为什么最负的int值会导致有关模糊函数重载的错误?

我正在学习C++中的函数重载,并遇到了这个问题:

void display(int a)
{
    cout << "int" << endl;
}

void display(unsigned a)
{
    cout << "unsigned" << endl;
}

int main()
{
    int i = -2147483648;
    cout << i << endl; //will display -2147483648
    display(-2147483648);
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,该int范围内给出的任何值(在我的情况下int是4个字节)都将调用,display(int)并且该范围之外的任何值都将是不明确的(因为编译器无法决定调用哪个函数).int除了最小值之外,它对整个值范围有效,即-2147483648编译因错误而失败

超载的召唤display(long int)是模棱两可的

但是将相同的值与a int打印并给出值2147483648.我对这种行为感到困惑.

为什么只有在传递最负数时才会观察到这种行为?(该行为是相同的,如果一个short使用具有-32768-事实上,在负数和正数具有相同的二进制表示任何情况下)

使用的编译器:g ++(GCC)4.8.5

c++ integer overloading negative-number ambiguous-call

88
推荐指数
2
解决办法
4553
查看次数

绝对定位在绝对位置内

我有3个div元素.

1号div更大(包裹)并且有position:relative;

第2个div位于绝对第1个div相对位置(并包含在第1个div)

第3个div包含在第2个div,也有绝对定位.

<div id="1st">
   <div id="2nd">
     <div id="3rd"></div>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

为什么第3个div位置绝对到第2 个位置div(这也是第1个位置的绝对位置div)而不是第1个div位置具有相对位置?

因为第3 div是绝对定位到绝对定位第2 div.

html css css-position

77
推荐指数
4
解决办法
6万
查看次数

什么是间接扩张?$ {!var*}是什么意思?

我正在读" Bash初学者指南 ".它说:

如果第一个字符PARAMETER是感叹号,则Bash使用由其余部分形成的变量的值作为变量PARAMETER的名称; 然后展开此变量,并将该值用于替换的其余部分,而不是其PARAMETER自身的值.这被称为间接扩张.

给出的例子是:

franky ~> echo ${!N*}
NNTPPORT NNTPSERVER NPX_PLUGIN_PATH
Run Code Online (Sandbox Code Playgroud)

我在这里不太明白:

从其余部分形成的变量的值 PARAMETER

由于PARAMETER是刚刚!N*的话

其余的 PARAMETER

只是N*.怎么会形成一个变量?Bash在那里搜索了所有可能的命令吗?

bash indirection

70
推荐指数
3
解决办法
3万
查看次数

使用“memcpy”复制二维数组在技术上是未定义的行为吗?

在对这个最近问题的评论中出现了一个有趣的讨论:现在,虽然那里的语言是C,但讨论已经转向C++标准所指定的内容,即使用 a 访问多维数组的元素时构成未定义行为的内容。功能类似于std::memcpy.

\n

首先,这是该问题的代码,已转换为 C++ 并const尽可能使用:

\n
#include <iostream>\n#include <cstring>\n\nvoid print(const int arr[][3], int n)\n{\n    for (int r = 0; r < 3; ++r) {\n        for (int c = 0; c < n; ++c) {\n            std::cout << arr[r][c] << " ";\n        }\n        std::cout << std::endl;\n    }\n}\n\nint main()\n{\n    const int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };\n    int arr_copy[3][3];\n    print(arr, 3);\n    std::memcpy(arr_copy, arr, sizeof arr);\n …
Run Code Online (Sandbox Code Playgroud)

c c++ multidimensional-array undefined-behavior language-lawyer

70
推荐指数
4
解决办法
6066
查看次数

在已排序和旋转的数组中搜索

在准备技术面试时,我偶然发现了这个有趣的问题:

您已经获得了一个已排序然后旋转的数组.

arr = [1,2,3,4,5]哪个被排序然后旋转说两次给右边

[4,5,1,2,3]

现在,如何在这个已排序+旋转的数组中进行最佳搜索?

可以取消旋转数组,然后进行二分查找.但这并不比在输入数组中进行线性搜索更好,因为两者都是最坏的情况O(N).

请提供一些指示.我已经搜索了很多特殊算法,但找不到任何算法.

我理解c和c ++

c c++ arrays algorithm

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

获取Qt应用程序中的当前工作目录

我正在使用Qt库用C++编写程序.我的home bin目录中有一个符号链接到可执行文件.我希望我的程序的当前工作目录是我与终端的目录(即pwd命令的结果).我看到了该QDir::currentPath()函数,但它返回了二进制文件所在的目录.

如何找到当前的工作目录?

c++ qt

67
推荐指数
4
解决办法
14万
查看次数

'uint32_t'没有命名类型

我正在尝试编译2007年编写的C++软件包,我收到了这个错误:

error: ‘uint32_t’ does not name a type

这是在使用g ++ 4.5.2的64位Ubuntu中发生的.它使用g ++ 4.1.2在64位CentOS上编译良好.

#include我缺少一个或一个编译器标志吗?或者,我应该typedef用来分配uint32_t一个size_t或者一个unsigned int

c++ cstdint uint32-t

66
推荐指数
4
解决办法
15万
查看次数

C++:临时论证的生命周期?

当创建a的新实例MyClass作为函数的参数时,如下所示:

class MyClass
{
  MyClass(int a);
};    

myFunction(MyClass(42));
Run Code Online (Sandbox Code Playgroud)

该标准是否使得任何被授权者都能获得析构函数的时间安排?
具体来说,我可以假设在调用之后的下一个语句之前调用它myFunction()吗?

c++ destructor

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

GCC 4.8中C++ 11 thread_local变量的性能损失是多少?

来自GCC 4.8草案变更日志:

G ++现在实现了C++ 11 thread_local关键字; 这与GNU __thread关键字的不同之处主要在于它允许动态初始化和销毁​​语义.不幸的是,这种支持需要对非函数局部thread_local变量的引用进行运行时惩罚, 即使它们不需要动态初始化,因此用户可能希望继续使用__thread具有静态初始化语义的TLS变量.

这种运行时惩罚的本质和来源究竟是什么?

显然,为了支持非函数局部thread_local变量,在进入每个线程main之前需要有一个线程初始化阶段(就像全局变量的静态初始化阶段一样),但是它们指的是一些超出该阶段的运行时惩罚?

粗略地说一下gcc的thread_local新实现的架构是什么?

c++ linux multithreading gcc c++11

64
推荐指数
3
解决办法
2万
查看次数

.toInt()在Swift 2中删除了吗?

我正在使用一个使用文本字段并将其转换为整数的应用程序.以前是我的代码

textField.text.toInt() 
Run Code Online (Sandbox Code Playgroud)

工作.现在Swift将此声明为错误,并告诉我这样做

textField.text!.toInt()
Run Code Online (Sandbox Code Playgroud)

它说没有toInt()并尝试使用Int().这也行不通.刚刚发生了什么?

swift swift2

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