C部门的分部计划

时间:2013-03-16 21:25:58

标签: c linux division

我正在做一个程序,展示如何用二进制代码进行除法。

#include <stdio.h>
#include <stdlib.h>

unsigned int division(unsigned int a, unsigned int b) // fonction division
{
    int i;
    b = (b << 16);
    for(i = 0; i <= 15; i++)
    {
        a = (a << 1);
        if(a >= b)
        {
            a = a - b;
            a = a + 1;
        }
    }
    return a;
}

int main()
{
    unsigned int i, a, b, d, N;
    unsigned short c;

    FILE* rep;
    rep = fopen("reponse.txt", "w"); /* ouverture du fichier */

    printf("Entrer le nombre de division a effectuer");
    scanf("%i", &N);

    printf("Veuillez inserer la ou les divisions a effectuer\n");
    printf("de la facon suivante : a/b\n");

    for(i = 1; i <= N; i++)
    {
        scanf("%i/%i", &a, &b); /* il suffira d'entrer a/b */
            d = division(a, b); /* la division de a par b */
            c = unsigned short(d); /* les 16 premiers bits */
            d = (d >> 16); /* les 16 premiers bits */
            fprintf(rep, "division %i : %i/%i = %d reste %i\n", i, a, b, c, d);
    }
    fclose(rep); /* fermeture du fichier */
    return 0;
}

它向我error: expected expression before 'unsigned'显示此行c = unsigned short(d); 我不知道究竟是什么问题! 有谁可以帮助我吗?我在Code :: Blocks

上使用Linux Ubuntu 12.10编码

1 个答案:

答案 0 :(得分:4)

c = unsigned short(d);

这不是C。

要从一种类型转换为另一种类型,您可以使用强制转换运算符:

c = (unsigned short) d;

请注意,由于unsigned intunsigned short之间存在隐式转换,因此不需要强制转换,这是等效的:

c = d;