C++ 我不懂打字

C++ 我不懂打字,c++,C++,我是一个编程新手,以前没有编程经验。我买了一本书,叫做C++编程,绝对是初学者的李国煌(不是广告或任何东西),在第2课结束时(显示变量和忘记解释铸造),他们给你这个游戏: #include <iostream> #include <string> int main() { using std::cout; using std::cin; using std::string; string name; cout << "

我是一个编程新手,以前没有编程经验。我买了一本书,叫做C++编程,绝对是初学者的李国煌(不是广告或任何东西),在第2课结束时(显示变量和忘记解释铸造),他们给你这个游戏:

#include <iostream>
#include <string>

int main() {
    using std::cout;
    using std::cin;
    using std::string;
    string name;
    cout << "Welcome to the weapon store, noble knight."
         << " Come to equip the army again?\n"
         << "What is your name? ";
    cin >> name;
    cout << "Well then, Sir " << name.c_str()
         << ", let's get shopping\n";
    double gold = 50.0;
    int silver = 8;
    const double SILVERPERGOLD = 6.7;
    const double BROADSWORDCOST = 3.6;
    unsigned short broadswords;
    cout << "You have " << gold << " gold pieces and "
         << silver << " silver." << "\nThat is equal to ";
    gold += silver / SILVERPERGOLD;
    cout << gold << " gold.\n";
    cout << "How many broadswords would you like to buy?"
         << " (3.6) gold each ";
    cin >> broadswords;
    gold = gold - broadswords * BROADSWORDCOST;
    cout << "\nThank you. You have " << gold << " left.\n";
    silver = (int)((gold - (int)gold)) * SILVERPERGOLD;
    gold = (double)((int)(gold));
    cout << "That is equal to " << gold << " gold and "
         << silver << " silver. \n"
         << "Thank you for shopping at the Weapon Store. "
          << "Have a nice day, Sir " << name.c_str() << ".\n";
   system("pause");
   return 0;
}
#包括
#包括
int main(){
使用std::cout;
使用std::cin;
使用std::string;
字符串名;
库特
+=
表示“将
+=
左侧的变量增加右侧的量”

这是一种非常非常错误的浮点余数计算方法

类型castiing是显式类型转换的另一个名称

(double)x

表示“取代码< x/>代码>返回相同的值,但类型<代码>双< /代码>。如果<代码> x<代码>为7,结果将是7。在C++中使用类型转换是一种长期过时的方法。谷歌“C样式转换”以获取更多信息。 相应地,

(int)x
表示“取x并返回与
int
”相同的值。如果x为7.83,则结果为7(即小数部分被删除)

所以
((gold-(int)gold))
的意思是“从
gold
中减去整个部分,留下小数部分”。然后作者将结果乘以金银转换率,并将其四舍五入为整数。这可能会给我们银币的变化量。最后,使用
gold=(double)((int)(黄金)
作者将黄金的数量向下舍入为整数。小数部分已转换为白银,因此两个数字,
黄金和
白银一起构成您的货币总额


整个操作都试图在价格中加入一整块黄金,并用白银来弥补其余部分。千万不要这样做。

白银被铸造成双倍,因此等于8.0“
cout@BaummitAugen抱歉,伙计,不。@sirvilliamoforange这本书已经在教你坏习惯,比如C风格的演员。你应该接受建议。因为,坏程序员是你的主要敌人。他们在互联网上写书、写博客和发帖,他们的数量远远超过了好程序员。“取x的值,并将其视为具有类型double”。-不,这意味着将
x
的值转换为类型
double
@MattMcNabb这是正确的,但解释不了太多。“Cast”和“convert”“是同义词,用另一个来解释一个并不过分。@nm它们不是同义词。Cast表示显式转换;也有非Cast转换(又称隐式转换)。尽管我同意你的观点,说“一个Cast转换值”实际上说的不多。我将重新措辞:我认为“将值视为”这不是一个很好的描述;它让人想起将
int*
转换为
char*
时发生的情况,通常被描述为“将int视为一系列字符”。例如,当将
double
转换为
int
时,值可能会更改;您会丢失信息。它会生成一个新值,而不是旧值的视图。@MattMcNabb我对措辞做了一些更改。@n.m.非常感谢我做了一些研究,并消除了作者向我展示的一些坏习惯。谢谢!
(double)x
(int)x