int a=b=1这样定义为什么是错误的
6个回答
展开全部
因为机器是这样翻译的:先把1赋值给b,再把b赋值给a,中间的那个b,它认为是未定义的。
你可以这样写:int a,b;a=b=1;
你可以这样写:int a,b;a=b=1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样只定义了a的类型为int
那么b是什么类型呢?编译器不知道。既然类型都不知道怎么可能把b的值赋给a呢?
可以这样写int a,b ;a=b=1;这样就没错了。
#include<stdio.h>
int main(void)
{
int a,b;
a=b=1;
printf("a=%d b=%d",a,b);
return 0;
}
给你个实例,自己琢磨。
那么b是什么类型呢?编译器不知道。既然类型都不知道怎么可能把b的值赋给a呢?
可以这样写int a,b ;a=b=1;这样就没错了。
#include<stdio.h>
int main(void)
{
int a,b;
a=b=1;
printf("a=%d b=%d",a,b);
return 0;
}
给你个实例,自己琢磨。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还没有定义b就对b进行赋值,编译器由于不能确定b的地址而无法认识b。先定义后赋值就不会出现问题了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-02-26
展开全部
在定义时,是不能连续赋值的,你可以在随后的语句中连续赋值,如 int a,b; a=b=1; 也可以int a=1,b=1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询