我正在学习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
我有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.
我正在读" Bash初学者指南 ".它说:
如果第一个字符
PARAMETER是感叹号,则Bash使用由其余部分形成的变量的值作为变量PARAMETER的名称; 然后展开此变量,并将该值用于替换的其余部分,而不是其PARAMETER自身的值.这被称为间接扩张.
给出的例子是:
Run Code Online (Sandbox Code Playgroud)franky ~> echo ${!N*} NNTPPORT NNTPSERVER NPX_PLUGIN_PATH
我在这里不太明白:
从其余部分形成的变量的值
PARAMETER
由于PARAMETER是刚刚!N*的话
其余的
PARAMETER
只是N*.怎么会形成一个变量?Bash在那里搜索了所有可能的命令吗?
在对这个最近问题的评论中出现了一个有趣的讨论:现在,虽然那里的语言是C,但讨论已经转向C++标准所指定的内容,即使用 a 访问多维数组的元素时构成未定义行为的内容。功能类似于std::memcpy.
首先,这是该问题的代码,已转换为 C++ 并const尽可能使用:
#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
在准备技术面试时,我偶然发现了这个有趣的问题:
您已经获得了一个已排序然后旋转的数组.
例
让arr = [1,2,3,4,5]哪个被排序然后旋转说两次给右边
[4,5,1,2,3]
现在,如何在这个已排序+旋转的数组中进行最佳搜索?
可以取消旋转数组,然后进行二分查找.但这并不比在输入数组中进行线性搜索更好,因为两者都是最坏的情况O(N).
请提供一些指示.我已经搜索了很多特殊算法,但找不到任何算法.
我理解c和c ++
我正在使用Qt库用C++编写程序.我的home bin目录中有一个符号链接到可执行文件.我希望我的程序的当前工作目录是我与终端的目录(即pwd命令的结果).我看到了该QDir::currentPath()函数,但它返回了二进制文件所在的目录.
如何找到当前的工作目录?
我正在尝试编译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?
当创建a的新实例MyClass作为函数的参数时,如下所示:
class MyClass
{
MyClass(int a);
};
myFunction(MyClass(42));
Run Code Online (Sandbox Code Playgroud)
该标准是否使得任何被授权者都能获得析构函数的时间安排?
具体来说,我可以假设在调用之后的下一个语句之前调用它myFunction()吗?
G ++现在实现了C++ 11
thread_local关键字; 这与GNU__thread关键字的不同之处主要在于它允许动态初始化和销毁语义.不幸的是,这种支持需要对非函数局部thread_local变量的引用进行运行时惩罚, 即使它们不需要动态初始化,因此用户可能希望继续使用__thread具有静态初始化语义的TLS变量.
这种运行时惩罚的本质和来源究竟是什么?
显然,为了支持非函数局部thread_local变量,在进入每个线程main之前需要有一个线程初始化阶段(就像全局变量的静态初始化阶段一样),但是它们指的是一些超出该阶段的运行时惩罚?
粗略地说一下gcc的thread_local新实现的架构是什么?
我正在使用一个使用文本字段并将其转换为整数的应用程序.以前是我的代码
textField.text.toInt()
Run Code Online (Sandbox Code Playgroud)
工作.现在Swift将此声明为错误,并告诉我这样做
textField.text!.toInt()
Run Code Online (Sandbox Code Playgroud)
它说没有toInt()并尝试使用Int().这也行不通.刚刚发生了什么?
c++ ×7
c ×2
algorithm ×1
arrays ×1
bash ×1
c++11 ×1
css ×1
css-position ×1
cstdint ×1
destructor ×1
gcc ×1
html ×1
indirection ×1
integer ×1
linux ×1
overloading ×1
qt ×1
swift ×1
swift2 ×1
uint32-t ×1