質問

この質問にはすでに答えがあります:

このCコードを取得しました。

#include <stdio.h>

int main(void)
{
        int n, d, i;
        double t=0, k;
        scanf("%d %d", &n, &d);
        t = (1/100) * d;
        k = n / 3;
        printf("%.2lf\t%.2lf\n", t, k);
        return 0;
}

私の変数「t」が常にゼロである理由を知りたいですか(printf関数で)?

役に立ちましたか?

解決

この表現で

t = (1/100) * d;

1と100は整数値であり、整数部門は切り捨てられているので、これはこれと同じです

t = (0) * d;

あなたはそれをこのようにフロート定数にする必要があります

t = (1.0/100.0) * d;

あなたもこれで同じことをしたいかもしれません

k = n / 3.0;

他のヒント

整数部門を使用しており、1/100は整数部門では常にゼロになります。

フローティングポイント分割を行い、結果を単純に切り捨てたい場合は、代わりにフローティングポインターリテラルを使用していることを確認でき、Dは暗黙的に変換されます。

t = (int)((1.0 / 100.0) * d);

そのせいだと思います

t = (1/100) * d;

整数分割として1/100 = 0

その後、0 * dは常に0に等しくなります

1.0/100.0を実行すると、正しく機能すると思います

Webアプリケーションの作成時にコンテンツデータベースが作成されます。ただし、複数のサイトコレクションになる可能性があるように、Webアプリケーションに複数のコンテンツデータベースが複数ある場合があります。各サイトコレクションは最大1つのデータベースを持つことができますが、複数のサイトコレクションは同じコンテンツデータベースを共有できます。これはMOSS、SP 2010の場合であり、現在SP 2013 にもあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top