#include <stdio.h>
int main(void)
{
int ASCII[20] = { 92, 110, 92, 116, 92, 118, 92, 98, 92, 114, 92, 102, 92, 92, 92, 39, 92, 34, 92, 0 };
char *Constants[] = { '\n', '\t', '\v', '\b', '\r', '\f', '\\', '\'', '\"', '\0' };
int Decimal[8] = { 128, 64, 32, 16, 8, 4, 2, 1 };
int Binary[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
int val;
for (int i = 0; i < 20; i++){
val = ASCII[i];
val++; //calculations were one off, so countered mis-calculations with this
for (int i = 0; i < 8; i++){
if (val > Decimal[i]){
val -= Decimal[i];
Binary[i] = 1;
}
}
for (int i = 0; i < 8; i++){
printf("%d", Binary[i]);
}
if ((i + 1) % 2 == 0){
printf("%\n");
}
}
我是C的新手,我正在尝试创建一个将小数(常量)转换为二进制值的简单程序。然而,循环似乎在第一次迭代后卡住了,如下所示:
0101110001111110
0111111001111110
0111111001111110
0111111001111110
0111111001111110
0111111001111110
0111111001111110
0111111001111110
0111111101111111
0111111101111111
请帮助。
答案 0 :(得分:3)
较大的for循环中的变量i
和较小的循环内的其他i
正在混淆!!
更改,使用不同的变量
编辑:
正如David在下面的评论中提到的那样:在完成使用后,您还应该重新初始化Binary
:
for ( j = 0; j < 8; j++){
printf("%d", Binary[j]);
Binary[j] = 0;
}