为C中的结构变量赋值

为C中的结构变量赋值,c,struct,C,Struct,我在为结构中的变量赋值时遇到问题。我的代码如下所示 typedef struct _neuron { double value[100]; int id; }NEURON; int main() { NEURON node; int i; for(i = 0; i < 100; i++){ node.value[i] = 10; printf("the value is %d\n",node.value[i]); } } typedef结

我在为结构中的变量赋值时遇到问题。我的代码如下所示

typedef struct _neuron
{
    double value[100];
    int id;
}NEURON;

int main() {
  NEURON node;
  int i;
  for(i = 0; i < 100; i++){
    node.value[i] = 10;
    printf("the value is %d\n",node.value[i]);
  }
}
typedef结构\u
{
双值[100];
int-id;
}神经元;
int main(){
神经元结;
int i;
对于(i=0;i<100;i++){
节点值[i]=10;
printf(“值为%d\n”,node.value[i]);
}
}

我分配给结构变量的值是10,但我得到的是0而不是10。有人知道问题出在哪里吗?

您使用了错误的格式说明符来
printf

%d
格式说明符需要一个
int
参数,但您传入的是一个
双精度
。使用错误的格式说明符会调用未定义的行为

对于
双精度
,请使用
%f
格式说明符

printf("the value is %f\n",node.value[i]);

提高编译器中的警告级别或更可能-不要忽略编译器发出的警告!谢谢您的帮助。如果回答了您的问题,请不要忘记将此答案标记为已接受。@Stephancher不适用于
printf
。对于
scanf
,使用
%lf
表示
double*
,使用
%f
表示
float*