【发布时间】:2016-01-19 13:16:49
【问题描述】:
我主要是一名电子硬件专家,但我从朋友那里学到了 D 的基础知识,所以我决定选择一种更标准的语言,比如 C。所以,任何建议都会很棒。 基本上,我使用整数 'phew' 作为计数器来反转所有数字。超级基本,但我在 C 中找不到方法。我的代码:
#include <stdio.h>
int main()
{
int input;
int phew;
printf("Binary Number: ");
scanf("%d", &input);
while(phew < sizeof(input))
{
if(input[phew] == 0)
printf("1");
else
printf("0");
phew++;
}
return 0;
}
编译器错误是:
helloworld.c: In function ‘main’:
helloworld.c:11:11: error: subscripted value is neither array nor pointer nor vector
if(input[phew] == 0)
^
【问题讨论】:
-
[]是下标运算符,只能用于数组和指针数据类型,input两者都不是。 -
编译器告诉您
input不是数组,这就是您尝试使用它的方式。在被赋予值之前,您还可以通过使用phew获得未定义的行为。本地(自动)变量未初始化。 -
即使
input是一个数组,while(phew < sizeof(input))是不正确的,那不是元素的数量。 -
我建议在您的问题中使用更精确的语言,因为“反转所有数字”并没有真正的意义。反转什么?位数?命令?看起来你正在尝试做的是“按位值的升序打印整数的位”,所以我已经根据这个假设写了一个答案。
-
我回滚了,因为关于网站使用的咆哮不应该进入问题/答案。如果您觉得您对该网站的定义与其他用户不同,请在meta.stackoverflow.com 上提出辩论,而不是在您自己的技术问题中。