我有以下程序意味着計算質數:如果我改變cout << primeVector[i] << ' ';
到cout << primeVector[i] << ' ';
(我加一個空格)行爲什麼添加兩個空格會產生不正確的輸出?
#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();
}
它給了我
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
爲什麼會發生這種情況?只有一個空間被添加。它不會出現雙引號。
因爲''''用於字符文字,而不是字符串文字,並且雙字符文字具有實現定義的值。大多數編譯器會對此提出警告。 (您正在編譯時啓用了所有警告,是嗎?) – cdhowie
當您將多個字符放在單引號內時,您會得到一個多字符字面值,其實現定義值爲int類型,而不是字符串。在這種情況下,它顯然具有值「8224」。用雙引號,你會得到一個字符串。 –