我正在做一个程序,展示如何用二进制代码进行除法。
#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
答案 0 :(得分:4)
c = unsigned short(d);
这不是C。
要从一种类型转换为另一种类型,您可以使用强制转换运算符:
c = (unsigned short) d;
请注意,由于unsigned int
和unsigned short
之间存在隐式转换,因此不需要强制转换,这是等效的:
c = d;