#include <iostream>
#include <string>
typedef unsigned long long ul64;
double m[10] = { 65.45433, 45435.0054, 232543535.9, 0.00043543, 99.99999, 5345434.000, 754354.6, 80008.243, 0.9, 10.01 };
union foo
{
char cs[8];
double x;
ul64 a;
foo(std::string s) { for (int i = 0; i < s.size(); i++) cs[i] = s[i];}
foo(double y) :x(y){}
foo(ul64 b) :a(b){}
};
int main()
{
foo bar(0xe8e711395e65686d);
for (int i = 1; i <= 10; i++)
bar.x *= m[i];
for (int i = 1; i <= 8; i++)
std::cout << bar.cs[i];
std::cout << std::endl;
return 0;
}
我的考试有这段代码,但我不知道自己在做什么。请帮帮我!我只知道它有一些错误并显示出来。
答案 0 :(得分:0)
也许这只会压倒你。
首先从第一行开始:
是什么 foo bar(0xe8e711395e65686d);
做什么?它创建一个名为bar的变量,其类型为foo,并使用参数0xe8e711395e65686d调用构造函数。那这是做什么的呢?
阅读Mooing Duck的评论:它打算做什么,以及如何解决它以便它能够做它想要做的事情?
你有两个for循环:
for (int i = 1; i <= 10; i++)
for (int i = 1; i <= 8; i++)
两者都包含同样的初学者错误。这是什么错误?修理它。
最后在输出循环中,您需要了解联合是什么。代码很奇怪,但你仍然可以解释它的作用。