2016-09-20 111 views
2

所以我是新人我試着尋找一個解決方案,但是,我真的不明白這一點,我正在寫速記,以瞭解他們如何可以替換爲其他代碼段,所以我跑過了我添加的模數,但它給出了一個「表達式必須具有整數或無範圍的枚舉類型」錯誤:「表達式必須具有整數或無範圍的枚舉類型」

我不知道枚舉類型是什麼,他們的代碼不運行?

#include<iostream> 
#include<string> 
using namespace std; 

int main() { 

    double b, x, y, z, a, c; 

    c, b, x, y, z, a, c = 100; 
    x += 5; 
    y -= 2; 
    z *= 10; 
    a /= b; 
    c %= 3; // "c" seems to be giving out that error? 


    cout << b << x << y << z << a << c; 


    return 0; 
} 

的這裏的問題是,「C」給出了「表達必須有整數或無作用域的枚舉類型」錯誤。

我知道模量是什麼,它給出了2個數字之間的餘數,但是我在這種情況下難倒了,因爲它應該給出餘數?它在語法上是錯誤的嗎?

+0

你申請一些 –

+0

你的問題是與 –

+3

C爲100這裏,但沒有其他人被設置。 –

回答

9

c是雙倍的,因此您不能使用模運算符%

改爲使用fmod()

所以改變這樣的:

c %= 3 

這樣:

c = fmod(c, 3); 

正如斯拉瓦提到的,你也可以使用一個int代替,就像這樣:

int c = 5; // for example 
c %= 3 

這不會要求ire使用fmod()。瞭解模塊運營商%適用於int s很重要。


由於πάνταρέι提到的,也有這樣的:Can't use modulus on doubles?


作爲一個側面說明維克多,你有這麼多的變數,但其中大部分尚未使用,或初始化。您是否編譯了所有啓用的警告?這裏是我得到的編譯你的原代碼(有評論說,產生錯誤的行)時:

C02QT2UBFVH6-lm:~ gsamaras$ g++ -Wall main.cpp 
main.cpp:9:5: warning: expression result unused [-Wunused-value] 
    c, b, x, y, z, a, c = 100; 
    ^
main.cpp:9:8: warning: expression result unused [-Wunused-value] 
    c, b, x, y, z, a, c = 100; 
    ^
main.cpp:9:11: warning: expression result unused [-Wunused-value] 
    c, b, x, y, z, a, c = 100; 
     ^
main.cpp:9:14: warning: expression result unused [-Wunused-value] 
    c, b, x, y, z, a, c = 100; 
      ^
main.cpp:9:17: warning: expression result unused [-Wunused-value] 
    c, b, x, y, z, a, c = 100; 
       ^
main.cpp:9:20: warning: expression result unused [-Wunused-value] 
    c, b, x, y, z, a, c = 100; 
       ^
main.cpp:10:5: warning: variable 'x' is uninitialized when used here [-Wuninitialized] 
    x += 5; 
    ^
main.cpp:7:16: note: initialize the variable 'x' to silence this warning 
    double b, x, y, z, a, c; 
      ^
       = 0.0 
main.cpp:11:5: warning: variable 'y' is uninitialized when used here [-Wuninitialized] 
    y -= 2; 
    ^
main.cpp:7:19: note: initialize the variable 'y' to silence this warning 
    double b, x, y, z, a, c; 
       ^
        = 0.0 
main.cpp:12:5: warning: variable 'z' is uninitialized when used here [-Wuninitialized] 
    z *= 10; 
    ^
main.cpp:7:22: note: initialize the variable 'z' to silence this warning 
    double b, x, y, z, a, c; 
        ^
         = 0.0 
main.cpp:13:5: warning: variable 'a' is uninitialized when used here [-Wuninitialized] 
    a /= b; 
    ^
main.cpp:7:25: note: initialize the variable 'a' to silence this warning 
    double b, x, y, z, a, c; 
         ^
         = 0.0 
main.cpp:13:10: warning: variable 'b' is uninitialized when used here [-Wuninitialized] 
    a /= b; 
     ^
main.cpp:7:13: note: initialize the variable 'b' to silence this warning 
    double b, x, y, z, a, c; 
      ^
      = 0.0 
11 warnings generated. 
+1

我認爲他需要用'int'來代替,但是從OP的代碼 – Slava

+0

@Slava我不太清楚,我同意,但這應該足以讓他開始! :)更新,謝謝! – gsamaras

+0

非常感謝你的澄清,我現在看到,你不能利用雙數據類型的模數我改變,我雖然我可以分配。非常感謝你@gsamaras –

相關問題