繁体   English   中英

为什么加两个空格会产生错误的输出?

[英]Why does adding two spaces produce incorrect output?

我有以下旨在计算素数的程序:

#include "stdafx.h"
#include <iostream>
#include <vector>

using namespace std;

bool primeTest(int number){
    if ((number == 0) || (number == 1)){
        return false;
    }
    if ((number == 2) || (number == 3)){
        return true;
    }
    for (int j = 2; j <= number / 2; j++){
        if (number%j == 0){
            return false;
        }
    }
    return true;
}

int main(){
    vector<int> primeVector;
    for (int i = 0; i <= 100; i++){
        if (primeTest(i)){
            primeVector.push_back(i);
        }
    }
    int pvSize = primeVector.size();
    for (int i = 0; i < pvSize; i++){
        cout << primeVector[i] << ' ';
    }
    cin.get();
}

如果我更改行cout << primeVector[i] << ' '; cout << primeVector[i] << ' '; (我加了一个空格)它给了我

28224382245822478224118224138224178224198224238224298224318224378224418224438224
478224538224598224618224678224718224738224798224838224898224978224

代替

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

为什么会发生这种情况? 仅添加了一个空格。 双引号不会发生。

字符串文字应使用双引号而不是单引号引起来。 单引号用于字符文字。 如果单个字符文字中包含多个字符,则该值为某个实现定义的整数。 多字符文字很少有用。

(请注意,这不适用于'\\n''\\n'东西,它是由转义序列表示的单个字符。)

使用" "代替。

简而言之,一个空格是一个字符,两个空格是两个字符或C样式字符串。
''-单个字符。
“” –两个空格需要双引号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM