加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C可能的编程谜团?

发布时间:2020-12-16 10:37:03 所属栏目:百科 来源:网络整理
导读:#include iostreamusing namespace std;int main(){ int loop = 0; int Pass = 0; int guess = 0; cout "Write In A 4 Digit Number!"; cin Pass; while (loop == 0) { guess = guess + 1; if (Pass == guess) { cout "Your number is" + guess; } } return
#include <iostream>

using namespace std;

int main()
{
    int loop = 0;
    int Pass = 0;
    int guess = 0;
    cout << "Write In A 4 Digit Number!";
    cin >> Pass;

    while (loop == 0)
    {
        guess = guess + 1;

        if (Pass == guess)
        {
            cout << "Your number is" + guess;
        }

   }
   return 0;
}

这个神秘的代码给了我随机输出.这是一个猜测你输入的数字的程序.相反,当你输入一个随机数并点击输入时,它会给你一些错误和YF等东西.通过测试代码自己尝试一下.如果您输入1并按Enter键,您将打印出我们的号码.

>我们的号码是
>你的号码是
> r号是
>数字是
>数字是

还有一些更奇怪的,如果你输入666你会得到:e :: _ S_normalize_catory catory not found,如果输入333?将打印出来.

还有更多.有些数字是空白的,但有些则不是.

有人可以告诉我为什么会这样!

关闭:感谢帮助我.我现在关闭了.你仍然可以聊天!

解决方法

你需要改变

cout << "Your number is" + guess;

cout << "Your number is " << guess;

在C中,向字符串文字添加数字不会将数字转换为字符串;它完全做了别的事情(指针算术).

有关C和C中指针算术的背景,请参见Everything you need to know about pointers in C(尤其是last section about strings).

你的程序打印出有趣字符串的原因是,一旦猜测变得足够大,“你的数字是”猜测指向字符串文字结束后的某些内存,程序会打印出该内存中发生的任何内容. (从技术上讲,你处于undefined behaviour的领域,因此你的程序可以以各种奇怪的方式合法地运行.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读