来,看几行 c++代码

2016-09-06 19:35:56 +08:00
 jccg90

问,下面这段代码有没有编译器警告,代码有没有问题,输出结果是多少? 求解答。。。

#include<stdio.h>

struct Info
{
    bool a;
    double b;
};

void getInfoList( vector<Info> & infoList)
{
    Info info;
    info.a = true;
    infoList.push_back(info);
}

int main()
{
    vector<Info> infoList;
    getInfoList( infoList);
    for (vector<Info>::iterator It = infoList.begin(); It != infoList.end(); It++)
    {
        printf("%f",(*It).b);
    }
    return 0;
}
5616 次点击
所在节点    程序员
42 条回复
loading
2016-09-06 19:37:40 +08:00
呵呵,真当这里的朋友不是人?
dtfm
2016-09-06 19:38:50 +08:00
来,看几行 c++代码
问,下面这段代码有没有编译器警告

答,滚犊子
Lonely
2016-09-06 19:53:41 +08:00
1 楼说得好
klaus6d
2016-09-06 20:01:35 +08:00
三楼说的好
visionsmile
2016-09-06 20:02:11 +08:00
四楼说的好。
hellov22ex
2016-09-06 20:02:46 +08:00
特地打开了个试了下, return 的是 0 。
imgalaxy
2016-09-06 20:10:12 +08:00
codepad.org
ideone.com

装个 Dev-C++能几分钟
jccg90
2016-09-06 20:13:14 +08:00
@imgalaxy 哈,要是编译器直接能看出来对错,我还费劲发帖子干嘛。。。感觉像是使用了未初始化的内存,但是试了几个编译器都没有问题。。。所以才来问问
bazingaterry
2016-09-06 20:19:02 +08:00
@jccg90 访问未初始化的内存并不会有警告,编译器根本不知道……
jzy
2016-09-06 20:19:18 +08:00
使用未初始化的变量难道语法上有错吗?为什么编译器要告诉你错?
sgissb1
2016-09-06 20:41:07 +08:00
LZ 不要胡说好吗?

用了 stl 的 vector ,居然连 using namespace std;这个申明都不要吗?
还有你只
#include<stdio.h>
是什么意思?


你到底有没有在编译器里面跑过?要不你说说你在什么编译器里面跑过
zhongkaixin
2016-09-06 20:46:40 +08:00
现在某些 90 后,连最基本的礼貌都不懂了
jmc891205
2016-09-06 21:06:56 +08:00
b 的值是由 Info 的默认构造函数初始化的 并不是未初始化。
至于它初始化用的是 0.0 还是用一个随机值 不同的编译器有不同的实现。
KingHL
2016-09-06 21:13:39 +08:00
vector 中的 info 对象是在存在在 getInfoList 这个函数的调用栈上的,碰巧能打印出来是因为栈空间还没有被覆盖,不知道是不是我说的这样, c++好久没用了。
KingHL
2016-09-06 21:15:37 +08:00
另外,楼主的这种提问方式,也是醉了,最起码你把程序写对了吧。
yangff
2016-09-06 21:17:59 +08:00
@jmc891205
@KingHL
... push_back 是会复制(移动)的啊……
chai2010
2016-09-06 21:18:43 +08:00
printf %d ,还是先把 C 语言弄清楚吧
liuxu
2016-09-06 21:19:05 +08:00
@sgissb1 233,C++如果要用 c 的头文件,要用#include <cstdio>这样的格式
jmc891205
2016-09-06 21:24:47 +08:00
@yangff 是啊 copy 的时候调用默认拷贝构造函数 copy 之后的值还是等于 Info info 时默认构造函数用来初始化 b 的值
yangff
2016-09-06 21:26:09 +08:00
@jmc891205 我要回复 @KingHL 来着的……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/304396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX