我只是注意到我无法正确调试rvalue引用gdb-7.7.1.
void simple(int &&i) {}
Run Code Online (Sandbox Code Playgroud)
当我输入这个简约函数时,我无法获得任何有意义的信息i.它的类型和值是未知到gdb.
simple(int&&) (i=<unknown type in /tmp/test, CU 0x0, DIE 0xcd78>) at test.cpp:10
(gdb) p i
$2 = <unknown type in /tmp/test, CU 0x0, DIE 0xcd78>
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?有没有明智的解决方法?升级是否会gdb-7.10解决这个问题?
为什么以下代码在没有警告的情况下编译.请注意,blablabla()未定义任何地方.
我测试了它在gcc 5.1.0和clang-3.7.0(有和没有-std = C++ 11标志).
#include <string>
int main()
{
std::string(blablabla());
}
Run Code Online (Sandbox Code Playgroud)
这个问题不是最令人烦恼的解析模糊的重复,因为相关的例子用参数声明函数.
给出一个类:
struct employee {
string name;
string ID;
string phone;
string department;
};
Run Code Online (Sandbox Code Playgroud)
以下功能如何工作?
ostream &operator<<(ostream &s, employee &o)
{
s << o.name << endl;
s << "Emp#: " << o.ID << endl;
s << "Dept: " << o.department << endl;
s << "Phone: " << o.phone << endl;
return s;
}
Run Code Online (Sandbox Code Playgroud)
cout << e;生成给定的格式化输出employee e.
示例输出:
Alex Johnson
Emp#: 5719
Dept: Repair
Phone: 555-0174
Run Code Online (Sandbox Code Playgroud)
我无法理解ostream功能是如何工作的.它如何获得参数"ostream&s"?它如何重载"<<"运算符以及<<运算符如何工作?如何用它来写出关于员工的所有信息?有人可以用外行的话回答这些问题吗?
我使用的是Visual Studio 2010 Pro一个上Windows 7 64bit机,我想使用count(从<algorithm>上头)valarray:
int main()
{
valarray<bool> v(false,10);
for (int i(0);i<10;i+=3)
v[i]=true;
cout << count(&v[0],&v[10],true) << endl;
// how to define the return type of count properly?
// some_type Num=count(&v[0],&v[10],true);
}
Run Code Online (Sandbox Code Playgroud)
上面程序的输出是正确的:
4
Run Code Online (Sandbox Code Playgroud)
但是,我想将值赋给变量,并int在编译器警告中使用有关精度损失的结果.由于valarray没有迭代器,我无法弄清楚如何使用iterartor::difference_type.
这有点可能吗?
我不明白为什么下面的代码编译?
struct A{ A(int); }; struct B{ A a{1}; };
Run Code Online (Sandbox Code Playgroud)
但这不是:
struct A{ A(int); }; struct B{ A a(1); };
Run Code Online (Sandbox Code Playgroud)
错误:在数字常量之前预期','或'...'
是否有某些原因编译器不接受第二种形式?我知道最令人烦恼的解析歧视,但我不认为这个问题是相关的.
编辑:正如Bo在下面的评论中解释的那样,我错了.现在的问题是关系到伤脑筋解析毕竟.
我在gcc-5.1.0上用--std = c ++ 11尝试了这个
我是C++的新手,研究增量和减量运算符.所以我尝试了这个例子:
int x = 4;
cout << ++x << " " << x++ << " " << x++ << endl << endl;
cout << x << endl;
Run Code Online (Sandbox Code Playgroud)
它在C++ .NET和QtCreator以及5个在线C++编译器上返回这个奇怪的输出:
7 5 4
7
Run Code Online (Sandbox Code Playgroud)
该奇怪的是,我希望是这样的:
5 5 6
7
Run Code Online (Sandbox Code Playgroud)
你能解释一下会发生什么吗
我写了一个简单的程序,它读取一个整数number并打印:1 / number.
我不明白为什么输出总是:0.000.
void main()
{
int n = 0;
scanf("%d",&n);
float f = 1 / n;
printf("%f",f);
}
Run Code Online (Sandbox Code Playgroud)