-2

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

#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 编码下

4

1 回答 1

4
c = unsigned short(d);

这不是 C。

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

c = (unsigned short) d;

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

c = d;
于 2013-03-16T21:26:35.650 回答