This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable,
visit the help center。
7年前关闭。
我正在尝试编写一种方法,该方法通过传递char指针来更改
Out1
和
Out0
的原始值,并提供按位比较功能。主文件测试各种值。但是,即使我强制转换,我仍会收到错误消息,说
Out1
的
Out0
和
fsm
构成
pointers from integers without a cast
。任何帮助将不胜感激。这是代码。
#include <stdio.h>
#include <stdlib.h>
void fsm(char I1, char I0, char Reset, char *Out1, char *Out0){
int I1num = I1-'0';
int I0num = I0-'0';
int ResetNum = Reset - '0';
int Out1Num = *Out1 - '0';
int Out0Num = *Out0 - '0';
int Out1Final = (Out0Num & !I0num & Out1Num)|(!Out0Num & I0num)|(!Out0Num & !Out1Num)|(I0num & !Out1Num);
int Out0Final = ((!(Out1Num & I0num) & !(!Out1Num & I0) & !(Out1Num & !(I0))) & !Out0Num) | (!(!((!Out1Num)&(I1num))&!((Out1Num)&(!I0num)))&Out0Num);
Out1 = (char)(Out1Final);
Out0 = (char)(Out0Final);
}
/*
*
*/
int main(int argc, char** argv) {
char Out1 = '0';
char Out0 = '0';
char *Out1Ptr = &Out1;
char *Out0Ptr = &Out0;
fsm('0','0','0', *Out1Ptr, *Out0Ptr);
printf("After I1:0, I0:0, Reset:0, Q1:0, Q0:0. Out1 is %s and Out0 is %s .", *Out1Ptr, *Out0Ptr );
Out1 = '1';
Out0 = '0';
fsm('0','0','0', *Out1Ptr, *Out0Ptr);
printf("After I1:0, I0:0, Reset:0, Q1:1, Q0:0. Out1 is %s and Out0 is %s .", *Out1Ptr, *Out0Ptr );
Out1 = '1';
Out0 = '1';
fsm('0','0','0', *Out1Ptr, *Out0Ptr);
printf("After I1:0, I0:0, Reset:0, Q1:1, Q0:1. Out1 is %s and Out0 is %s .", *Out1Ptr, *Out0Ptr );
Out1 = '0';
Out0 = '1';
fsm('0','0','0', *Out1Ptr, *Out0Ptr);
printf("After I1:0, I0:0, Reset:0, Q1:0, Q0:1. Out1 is %s and Out0 is %s .", *Out1Ptr, *Out0Ptr );
Out1 = '0';
Out0 = '0';
*Out1Ptr = Out1;
*Out0Ptr = Out0;
fsm('1','0','0', *Out1Ptr, *Out0Ptr);
printf("After I1:1, I0:0, Reset:0, Q1:0, Q0:0. Out1 is %s and Out0 is %s .", *Out1Ptr, *Out0Ptr );
Out1 = '1';
Out0 = '0';
fsm('1','0','0', *Out1Ptr, *Out0Ptr);
printf("After I1:1, I0:0, Reset:0, Q1:1, Q0:0. Out1 is %s and Out0 is %s .", *Out1Ptr, *Out0Ptr );
Out1 = '1';
Out0 = '1';
fsm('1','0','0', *Out1Ptr, *Out0Ptr);
printf("After I1:1, I0:0, Reset:0, Q1:1, Q0:1. Out1 is %s and Out0 is %s .", *Out1Ptr, *Out0Ptr );
Out1 = '0';
Out0 = '1';
fsm('1','0','0', *Out1Ptr, *Out0Ptr);
printf("After I1:1, I0:0, Reset:0, Q1:0, Q0:1. Out1 is %s and Out0 is %s .", *Out1Ptr, *Out0Ptr );
Out1 = '0';
Out0 = '0';
*Out1Ptr = Out1;
*Out0Ptr = Out0;
fsm('0','1','0', *Out1Ptr, *Out0Ptr);
printf("After I1:0, I0:1, Reset:0, Q1:0, Q0:0. Out1 is %c and Out0 is %c .", *Out1Ptr, *Out0Ptr );
Out1 = '1';
Out0 = '0';
fsm('0','1','0', *Out1Ptr, *Out0Ptr);
printf("After I1:0, I0:1, Reset:0, Q1:1, Q0:0. Out1 is %c and Out0 is %c .", *Out1Ptr, *Out0Ptr );
Out1 = '1';
Out0 = '1';
fsm('0','1','0', *Out1Ptr, *Out0Ptr);
printf("After I1:0, I0:1, Reset:0, Q1:1, Q0:1. Out1 is %c and Out0 is %c .", *Out1Ptr, *Out0Ptr );
Out1 = '0';
Out0 = '1';
fsm('0','1','0', *Out1Ptr, *Out0Ptr);
printf("After I1:0, I0:1, Reset:0, Q1:0, Q0:1. Out1 is %c and Out0 is %c .", *Out1Ptr, *Out0Ptr );
Out1 = '0';
Out0 = '0';
*Out1Ptr = Out1;
*Out0Ptr = Out0;
fsm('1','1','0', *Out1Ptr, *Out0Ptr);
printf("After I1:1, I0:1, Reset:0, Q1:0, Q0:0. Out1 is %c and Out0 is %c .", *Out1Ptr, *Out0Ptr );
Out1 = '1';
Out0 = '0';
fsm('1','1','0', *Out1Ptr, *Out0Ptr);
printf("After I1:1, I0:1, Reset:0, Q1:1, Q0:0. Out1 is %c and Out0 is %c .", *Out1Ptr, *Out0Ptr );
Out1 = '1';
Out0 = '1';
fsm('1','1','0', *Out1Ptr, *Out0Ptr);
printf("After I1:1, I0:1, Reset:0, Q1:1, Q0:1. Out1 is %c and Out0 is %c .", *Out1Ptr, *Out0Ptr );
Out1 = '0';
Out0 = '1';
fsm('1','1','0', *Out1Ptr, *Out0Ptr);
printf("After I1:1, I0:1, Reset:0, Q1:0, Q0:1. Out1 is %c and Out0 is %c .", *Out1Ptr, *Out0Ptr );
return (EXIT_SUCCESS);
}