我目前正在搞一个用C语言编写的项目,该项目将使用两个8位二进制数并将其转换为十进制值。我对C中的按位运算符以及它们如何处理数字有很好的了解,我的问题是一个围绕语法的问题。
ATM我的程序非常简单:
int main() {
char *inp1;
char *inp2;
unsigned long binNum1;
unsigned long binNum2;
printf("Enter the first binary number: ");
scanf("%s", inp1);
printf("Enter the second binary number: ");
scanf("%s", inp2);
binNum1 = strtoul(inp1, NULL, 2);
binNum2 = strtoul(inp1, NULL, 2);
unsigned long orVal = binNum1 | binNum2;
unsigned long andVal = binNum1 & binNum2;
unsigned long exclVal = binNum1 ^ binNum2;
printf("Your or value is: %lu", orVal);
printf("Your and value is: %lu", andVal);
printf("Your exclusive value is: %lu", exclVal);
return 0;
}
基本上,我只想获取ORing,ANDing和EXCLing每个二进制数的两个十进制值的值。但是,运行此命令时出现分段错误。我很确定这是由于语法的原因,但是对于这种类型的问题,我在网上找不到很多。
答案 0 :(得分:4)
使用这些行
class CategoryRequests(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
...
class CategoryRequests_Vote(models.Model):
voter = models.ForeignKey(User, on_delete=models.CASCADE)
voted = models.ForeignKey(CategoryRequests, on_delete=models.CASCADE)
published_date = models.DateField(auto_now_add=True, null=True)
class Meta:
unique_together = ('voter', 'voted')
def publish(self):
self.published_date = timezone.now()
self.save()
您尚未为char *inp1;
char *inp2;
...
scanf("%s", inp1);
scanf("%s", inp2);
或inp1
分配任何内存。指针未初始化,这可能是段错误的原因。
为简化起见,您可以这样做:
inp2
,并且对于char inp1[100];
printf("Enter the first binary number: ");
if(scanf("%99s", inp1) != 1) {
return 1;
}
同样。