![](/img/trans.png)
[英]C++: Native to Managed String Conversion Problem (Maybe Character Set)?
[英]c++ problem, maybe with types
我的代碼中有一個小問題。 變量不想更改其值。 你能說為什么嗎? 這是我的代碼:
vector<coordinate> rocks(N);
double angle;
double x, y;
// other code
while (x > 1.0 || x < -1.0 || y > 1.0 || y < -1.0) {
angle = rand() * 2.0 * M_PI;
cout << angle << endl;
cout << rocks[i - 1].x << endl;
cout << rocks[i - 1].y << endl;
x = rocks[i-1].x + r0 * cos(angle);
y = rocks[i-1].y + r0 * sin(angle);
cout << x << endl;
cout << y << endl << endl;
}
// other code
控制台上的結果是:
6.65627e + 09
0.99347
0.984713
1.09347
0.984713
1.16964e + 09
0.99347
0.984713
1.09347
0.984713
如您所見,x的值不變,y變量不變,這是一個無限循環。 有什么問題? 你怎么看?
為什么您期望x
和y
發生變化? 您為他們分配了不變的計算值?
rand() * 2.0 * M_PI
始終是2 * pi的倍數(據雙rand() * 2.0 * M_PI
表示),因此cos(angle)
將為1, sin(angle)
將為0。
也許您的rand()函數沒有定義。 有時,未能包含正確的標頭會導致調用奇數的默認蘭特,並且它可能總是返回相同的數字。 這只是我的頭頂,但我會朝那個方向檢查。
實際上,我永遠都不會記得rand發生的這種情況,但是我想如果您不包括math.h,我已經看到三角函數會發生這種情況。 雖然那可能是編譯器特有的怪癖。
您生成的angle
似乎非常大。 我假設您想生成0
到2*pi
之間的angle
。 檢查rand()
是否返回0到1之間的數字,並檢查M_PI
是什么。
如果這樣做沒有幫助,請通過添加更多cout
找出每個元素是什么
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.