2017-12-09 9 views
-2

私にエラーを与えて:: is_floating_pointを私は一定ではないので。私は与えられた範囲内の魔法の番号を見つけるためにしようとしていたが、その私は、STDで使用することができないようにこれは私にエラーを与えている

if(std::is_floating_point<i/10>) 

int main() { 
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */ 
    int k=18; 
    int prime=0, nonprime=0; 
    int N=100; 
int i=1, z=0, a=0, b=0; 
int req = 1; 
    for(i=2; i<=N; i++){ 
     if(std::is_floating_point<i/10>){ 
      for(z=1; z<=i; z++){ 
       if((i/z) == i){ 
        if((i/z) == 0){ 
         prime=prime+1; 
        }else{ 
         nonprime=nonprime+1; 
        } 
+0

のstd :: is_floating_pointチェック。たとえそれがあったとしても、何をしようとしているのかははっきりしません。 –

+0

は、そう 'I/10' int' no.'i'ある((I/z)は== i)が{ 'z'が邪魔に1 –

+0

ある'場合にのみ真である場合には '、答えは'はint型になります。 – user4581301

答えて

0

テンプレートを展開するために使用することができないのでiの値は、コンパイル時に知られていません。 @AdnanYが指摘するよう

次に、is_floating_pointテンプレートは、型ではない数を期待しています。あなたは、decltypeで型に

if(std::is_floating_point<decltype(i/10)>::value) 

を表現を変えることができ、これはまた、私はコンパイル時定数でないという問題を扱っています。 iの値は定数ではありませんが、その型はです。最後に::valueに注意してください。テンプレートが展開されたら、あなたはそれから結果boolを取得する::valueを必要としています。

最終点、i/10はそれほど結果が整数であることが保証されを通してずっと整数除算です。 ifは、常にfalseをテストし、本文をスキップします。

ここではサンプルコードのビットです:

#include <iostream> 
#include <type_traits> 

int main() { 
    for (int i=1; i < 1000; i++) 
     std::cout << std::boolalpha 
        << std::is_floating_point<decltype(i/10)>::value 
        << '\n'; 
} 

あなたが好きにループの上限を設定することができ、あなたは偽が、何かを得ることは決してないだろう。

関連する問題

 関連する問題