簡體   English   中英

C ++問題,也許與類型

[英]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變量不變,這是一個無限循環。 有什么問題? 你怎么看?

為什么您期望xy發生變化? 您為他們分配了不變的計算值?

rand() * 2.0 * M_PI始終是2 * pi的倍數(據雙rand() * 2.0 * M_PI表示),因此cos(angle)將為1, sin(angle)將為0。

也許您的rand()函數沒有定義。 有時,未能包含正確的標頭會導致調用奇數的默認蘭特,並且它可能總是返回相同的數字。 這只是我的頭頂,但我會朝那個方向檢查。

實際上,我永遠都不會記得rand發生的這種情況,但是我想如果您不包括math.h,我已經看到三角函數會發生這種情況。 雖然那可能是編譯器特有的怪癖。

您生成的angle似乎非常大。 我假設您想生成02*pi之間的angle 檢查rand()是否返回0到1之間的數字,並檢查M_PI是什么。

如果這樣做沒有幫助,請通過添加更多cout找出每個元素是什么

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM